RecyclerView实现点击事件


 

首先点击file-->project-->选中新创建的工程-->dependencies-->点击“+”号-->选中第一个-->找到recyclerview-v7 (com.android.support:recyclerview-v7:25.3.1)-->ok

接着创建布局:

 
 
[html] view plain copy
  1. <android.support.v7.widget.RecyclerView  
  2.     android:id="@+id/rv"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" />  



  1. public class MainActivity extends AppCompatActivity {  
  2.     RecyclerView rv;  
  3.     List<String> list=new ArrayList<String>();  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_main);  
  8.         rv= (RecyclerView) findViewById(R.id.rv);  
  9.         //模拟假数据  
  10.         for(int i=0;i<100;i++){  
  11.             list.add("条目"+i);  
  12.         }  
  13.         LinearLayoutManager manager=new LinearLayoutManager(this);  
  14.         rv.setLayoutManager(manager);  
  15.         //创建适配器  
  16.         MyAdapter adapter=new MyAdapter();  
  17.         rv.setAdapter(adapter);  
  18.         //设置点击事件  
  19.         adapter.setOnItemClickListener(new OnItemClickListener() {  
  20.             @Override  
  21.             public void OnItemClick(View view, int position) {  
  22.                 Toast.makeText(MainActivity.this,"------"+position,Toast.LENGTH_LONG).show();  
  23.             }  
  24.         });  
  25.     } 
  26.          创建适配器
  27.     public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>implements View.OnClickListener{  
  28.         //利用接口回调实现点击事件 
  29.        2,再实例,然后创建方法
  30.        private OnItemClickListener mOnItemClickListener = null;
        
        public static interface OnItemClickListener {
            void onItemClick(View view , int position);
        }
  31.   
  32.         @Override  
  33.         public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  
  34.             //加载布局  
  35.             View view=View.inflate(MainActivity.this,R.layout.item,null);  
  36.             //3,再点击,每次点击时都会调用此方法  
  37.                  view.setOnClickListener(this);
            //返回加载的视图
            return new MyViewHolder(view);
  38.         }  
  39.   
  40.         @Override  
  41.         public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {  
  42.             //为每个条目赋值  
  43.             ((MyViewHolder)holder).tv.setText(list.get(position));  
  44.             //把条目的下标position设置给holder  
  45.             holder.itemView.setTag(position);  
  46.         }  
  47.  
  48.          @Override
        public void onClick(View view) {
            if (mOnItemClickListener != null) {
                //注意这里使用getTag方法获取position
                mOnItemClickListener.onItemClick(view,(int)view.getTag());
            }
        }

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

  49.         @Override  
  50.         public int getItemCount() {  
  51.             //用三元表达式  如果集合list为空的话返回数目为零否则返回集合数目  
  52.             return list!=null?list.size():0;  
  53.         }  
  54.   
  55.         public class MyViewHolder extends RecyclerView.ViewHolder{  
  56.             TextView tv;  
  57.             public MyViewHolder(View itemView) {  
  58.                 super(itemView);  
  59.                 tv=itemView.findViewById(R.id.tv);  
  60.             }  
  61.         }  
  62.     } 
  63.   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值