我有一个RecyclerView
,每秒更新30次。现在我的问题是:
如果我在onBindViewHolder(final ViewHolder holder, int position)
方法中设置每个项目的OnClickListner,将每秒创建30个View.OnClickListner
对象。这会引起问题吗?谢谢。
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
}
答案 0 :(得分:2)
这里是很好的资源:
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);
}
});
}
答案 1 :(得分:1)
为this article中的RetcyerView项实现View.OnClickListener
的方法非常好。它还管理项目选择。
答案 2 :(得分:0)
可以。但这不是一个好习惯。您可以在ViewHolder
内设置点击侦听器,并且您有getAdapterPosition()
可以帮助您获取当前点击的项目。 (可能是您需要传递商品或其他东西)。
更多信息,您可以查看blog
答案 3 :(得分:-2)
u可以使用onBindViewHolder
来设置可点击的名称,并且可以使用
像这种情况
@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);
}
});
}