[英]Should I set OnClickListener of ReyclerView's Item inside OnBindViewHolder() method?
I have a RecyclerView
and I update it's items 30 times each second. 我有一个RecyclerView
,每秒更新30次。 Now my question is : 现在我的问题是:
If I set OnClickListner of each item inside onBindViewHolder(final ViewHolder holder, int position)
method, 30 View.OnClickListner
object will be created each second. 如果我在onBindViewHolder(final ViewHolder holder, int position)
方法中设置每个项目的onBindViewHolder(final ViewHolder holder, int position)
,将每秒创建30个View.OnClickListner
对象。 Will this cause a problem or not? 这会引起问题吗? Thanks. 谢谢。
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
}
Here is a good resource: 这是一个很好的资源:
Recyclerview-listener Recyclerview监听
public interface OnItemClickListener {
void onItemClick(ContentItem item);
}
public void bind(final ContentItem item, final OnItemClickListener listener) {
...
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
listener.onItemClick(item);
}
});
}
the approach to implement View.OnClickListener
for RetcyerView's Items in this article is very good. 实施办法View.OnClickListener
为RetcyerView在项目这篇文章是非常好的。 It also manages item selection. 它还管理项目选择。
Yes you can. 是的你可以。 But it is not good practice. 但这不是一个好习惯。 You can set your click listener inside ViewHolder
And you have getAdapterPosition()
that will help you to get current clicked item. 您可以在ViewHolder
设置单击侦听ViewHolder
并且具有getAdapterPosition()
可以帮助您获取当前的单击项。 (May be you need to pass item or something else). (可能是您需要传递商品或其他东西)。 More more information you can see the blog 更多信息,请参见博客
u can use onBindViewHolder
to set clickable and it work 你可以使用onBindViewHolder
来设置clickable并且它可以工作
like this case 像这种情况
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(mContext, NextModel.class);
mContext.startActivity(intent);
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.