在ViewHolder中添加item点击事件接口(自定义

在Adapter中定义接口并提供回调static class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {

    private List<String> mList;    private Context mContext;    private OnItemClickListener mOnItemClickListener;

    public HomeAdapter(List<String> list, Context context) {        mList = list;        mContext = context;    }    //在里面实现具体的点击响应事件,同时传入两个参数:view和postion    public interface OnItemClickListener{        void onItemClick(View view, int position);

        void onItemLongClick(View view, int position);    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {        this.mOnItemClickListener = onItemClickListener;    }

    public void removeData(int position) {        mList.remove(position);        notifyDataSetChanged();    }

    @Override    public HomeAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.myrecy_item,                parent, false));        return holder;    }

    //对item控件进行点击事件的监听并回调给自定义的监听    @Override    public void onBindViewHolder(final HomeAdapter.MyViewHolder holder, int position) {        holder.mTextView.setText(mList.get(position));        if (mOnItemClickListener != null) {            holder.mTextView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    int pos = holder.getLayoutPosition();//当前Item列数                    mOnItemClickListener.onItemClick(holder.mTextView, pos);                }            });            holder.mTextView.setOnLongClickListener(new View.OnLongClickListener() {                @Override                public boolean onLongClick(View view) {                    int pos = holder.getLayoutPosition();                    mOnItemClickListener.onItemLongClick(holder.mTextView, pos);                    return false;                }

            });        }    }

    @Override    public int getItemCount() {        return mList.size();    }

    class MyViewHolder extends RecyclerView.ViewHolder {        TextView mTextView;        public MyViewHolder(View itemView) {            super(itemView);            mTextView = itemView.findViewById(R.id.tv_item);        }    }}

在Main中的使用:
private void setLister() {//事件监听    mAdapter.setOnItemClickListener(new HomeAdapter.OnItemClickListener() {        @Override        public void onItemClick(View view, int position) {            Toast.makeText(MyRecyclerActivity.this, "点击了第" + (position + 1) + "条", Toast.LENGTH_SHORT).show();        }

        @Override        public void onItemLongClick(View view, final int position) {            new AlertDialog.Builder(MyRecyclerActivity.this)                    .setTitle("确定要删除吗?")                    .setNegativeButton("取消", null)                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {                        @Override                        public void onClick(DialogInterface dialogInterface, int i) {                            mAdapter.removeData(position);                        }                    }).show();        }    });}
 
时间: 2024-10-14 13:57:23

在ViewHolder中添加item点击事件接口(自定义的相关文章

从头开始学 RecyclerView(二) 添加item点击事件

不管了,先来张图 偶吐了个槽 item点击事件必须手动添加,默认并没有一个显式的API接口可供调用. 为了节约学习时间,网上找了篇很不错的文章.这里基本就复制了. 添加点击事件 RecyclerView#addOnItemTouchListener 分析 查看RecyclerView源码可以看到,RecyclerView预留了一个Item的触摸事件方法: public void addOnItemTouchListener(OnItemTouchListener listener) { mOnI

Android 高级UI设计笔记20:RecyclerView 的详解之RecyclerView添加Item点击事件

1. 引言: RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一下观察者模式. 2. 最终目的 模拟ListView的setOnItemClickListener()方法,调用者只须调用类似于setOnItemClickListener的东西就能获得被点击item的相关数据.   3. 原理 为RecyclerView的每个子item设置setOnClickLi

ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决办法

fragment中添加了button和checkbox这些控件,此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应. 这时候就可以使用descendantFocusability来解决啦,API描述如下: android:descendantFocusability 该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系. 属性的值有三种: beforeDescendants:viewgroup会优先其子类控件而获取到焦点

android捕获ListView中每个item点击事件

package com.wps.android; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListe

精通RecyclerView:打造ListView、GridView、瀑布流;学会添加分割线、 添加删除动画 、Item点击事件

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53126706 本文出自[DylanAndroid的博客] 精通RecyclerView:打造ListView.GridView.瀑布流:学会添加分割线. 添加删除动画 .Item点击事件 在上一篇Android用RecyclerView练手仿美团分类界面写了RecyclerView的基本用法, 今天想想,在这里重新学习一下RecyclerView的完整用法.包括如何打造一个普

ListView的Item点击事件(消息传递)

转载请保留原文出处“http://my.oschina.net/gluoyer/blog”,谢谢! 您可以到博客的“友情链接”中,“程序猿媛(最新下载)*.*”下载最新版本,持续更新!当前版本,也可直接点击“当前1.5版本”下载.     引子:自定义ListView的Adapter,给Item中的子控件(按钮.图标.文字等)添加点击事件,来进行点击后的不同处理,是经常要做的事情.但有些需要在处理事件中,对Activity中其他控件进行更新的话,通常把Adapter在Activity中实现,处理

后台找到repeater里面的div并添加客户端点击事件

public partial class Inv_SelectWorkservice : System.Web.UI.Page,IPostBackEventHandler{ } 通过OnItemCreated 找到repeater里面的div并添加客户端点击事件div要加上runat="server" id="itemTy" onclick="test" 后台: protected void Repeater2_ItemCreated(objec

从源码角度入手实现RecyclerView的Item点击事件

转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6758373.html RecyclerView 作为 ListView 和 GridView 的替代产物,相信在Android界已广为流传. RecyclerView 本是不会有类似 ListView 的那种点击事件,但是知道和会用又是两种情况,跟随我一起从源码角度分析,RecyclerView 点击事件. 首先看一下 Google 对 ListView 家族谱的介绍: 可以看出 ListView 归根

iOS 为自定义tableView添加button点击事件后获取其序号

在自定义tableView中,为cell添加button点击事件后,如何获取其对应的序号? 1.创建tableView: 先创建一个成员变量: @interface MyCameraViewController ()<UITableViewDelegate,UITableViewDataSource> { UITableView *_tableView; }@end 在viewDidLoad中初始化 _tableView = [[UITableView alloc] initWithFrame