RecyclerView的item点击事件

原创 2016年08月30日 22:28:33

适配器代码:
包含三个部分,一个是ViewHolder类,一个是实现父类的方法。另外一个是点击事件的一些方法和接口。其中一个setOnItemClickListener(OnItemClickListener),把传进来的已经实现的接口赋值给成员变量。ViewHolder实现了OnClickListener,每一个条目点击的时候就调用传过来的接口的onItemClick方法。

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    /*****************************************Adapter方法开始****************************************************/
    private ArrayList<String> data;

    public MyAdapter(ArrayList<String> data) {
        this.data = data;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.textView.setText(data.get(position));
    }

    @Override
    public int getItemCount() {
        return data.size();
    }
    /*****************************************Adapter方法结束****************************************************/


    /*****************************************ViewHolder类开始****************************************************/
    public class ViewHolder extends RecyclerView.ViewHolder
            implements View.OnClickListener {

        public TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            textView = (TextView) itemView.findViewById(R.id.textView);
            textView.setOnClickListener(this);
        }

        // 通过接口回调来实现RecyclerView的点击事件
        @Override
        public void onClick(View v) {
            if (itemClickListener != null) {
                itemClickListener.onItemClick(v, getPosition());
            }
        }
    }
    /*****************************************ViewHolder类结束****************************************************/

    /*****************************************item点击接口开始****************************************************/
    public OnItemClickListener itemClickListener;

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

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }
    /*****************************************item点击接口结束****************************************************/
}

下面是主Activity代码:

public class MainActivity extends AppCompatActivity {

    private TextView tv;
    private ViewOutlineProvider vp;
    private RecyclerView rcv;
    private ArrayList<String> data = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rcv = (RecyclerView) findViewById(R.id.rcv);
        data.add("张三");
        data.add("张三1");
        data.add("张三2");
        data.add("张三3");
        data.add("张三4");
        data.add("张三5");
        data.add("张三6");
        MyAdapter adapter= new MyAdapter(data);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        rcv.setLayoutManager(manager);
        rcv.setAdapter(adapter);
        adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MainActivity.this, data.get(position), Toast.LENGTH_SHORT).show();
            }![这里写图片描述](http://img.blog.csdn.net/20160830222652434)
        });

    }
}

运行效果如下

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

RecyclerView Item点击事件demo

  • 2017年01月06日 16:34
  • 28.92MB
  • 下载

RecyclerView的Item点击事件

  • 2017年04月25日 01:18
  • 1.39MB
  • 下载

RecyclerView的Item点击事件实现总结

自从开始使用RecyclerView代替ListView,会发现有很多地方需要学习。前一段时间的学习记录有: RecyclerView的滚动事件研究 - DevWiki RecyclerView...

RecyclerView实现Item点击事件方法一

RecyclerView具体是什么控件,它能做什么,相信不要我来说明了,当你能看到此文章,目的很明确,为RecyclerView实现条目点击事件,因为官方并没有为我们实现。此文章会有好几篇,每一篇会讲...

详解Android中回调机制与RecyclerView的Item点击事件实现

利用RecyclerView的例子,解释回调的概念。 实现RecyclerView的详细Item点击事件。...

为RecyclerView添加item的点击事件(转载)

转载学习http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2647.html 最终目的 模拟ListView的...
  • cxb0y
  • cxb0y
  • 2016年07月22日 10:11
  • 193

AndroidStudio GradView在RecyclerView中设置条目(Item)点击事件

GridView在RecyclerView中设置条目点击事件,Item点击事件,获取Item的位置
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RecyclerView的item点击事件
举报原因:
原因补充:

(最多只允许输入30个字)