stulcc的博客

路漫漫其修远兮,吾将上下而求索

RecyclerView的item点击事件

适配器代码:
包含三个部分,一个是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)
        });

    }
}

运行效果如下

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stulcc/article/details/52373746
个人分类: Android学习笔记
上一篇AndroidStudio自带的混淆功能
下一篇Android中的OKHttp
想对作者说点什么? 我来说一句

RecyclerView 三种item点击事件

2018年01月08日 136KB 下载

RecyclerViewItem点击事件

2017年04月25日 1.39MB 下载

RecyclerView Item点击事件demo

2017年01月06日 28.92MB 下载

没有更多推荐了,返回首页

关闭
关闭