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)
        });

    }
}

运行效果如下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值