RecyclerView的点击事件 | Java Debug 笔记

330 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>

目录

  • 问题
  • 解决

问题

问题:RecyclerView可以设置每个对象的点击事件吗?

Stackoverflow地址stackoverflow.com/questions/2…

大家有人使用RecyclerView找到了一种方法,可以为RecyclerView中的每一项设置onClickListener监听方法吗?我打算为每个项目的布局元素设置一个侦听器,但这似乎有些麻烦,我确信有一种方法可以让RecyclerView侦听onClick事件,但我目前想不到。

解决

由于RecyclerView官方的API方法已经发生了重大的变化,如果你想为每个元素项都创建一个单独的OnClickListener监听器,我也不会感到惊讶。不过,这并不困难。你可以在RecyclerView.Adapter的实现中,参考代码如下:

private final OnClickListener mOnClickListener = new MyOnClickListener();

@Override
public MyViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.myview, parent, false);
    view.setOnClickListener(mOnClickListener);
    return new MyViewHolder(view);
}

onClick方法定义如下:

@Override
public void onClick(final View view) {
    int itemPosition = mRecyclerView.getChildLayoutPosition(view);
    String item = mList.get(itemPosition);
    Toast.makeText(mContext, item, Toast.LENGTH_LONG).show();
}