本文正在参加「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();
}