我有一个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
}
});
}
这里是一个很好的资源:
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);
}
});
}
实施View.OnClickListener
为RetcyerView在this article项目的做法是非常好的。它还管理项目选择。
是的你可以。但它不是好的做法。你可以设置你的点击监听器里ViewHolder
你有getAdapterPosition()
,这将有助于你得到当前点击项目。 (可能是你需要通过项目或别的东西)。更多详细信息,你可以看到blog
ü可以使用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);
}
});
}