我应该里面OnBindViewHolder()方法来设置OnClickListener ReyclerView的项目吗?

问题描述 投票:0回答:4

我有一个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
      }
    });
  }
java android android-recyclerview onclicklistener
4个回答
2
投票

这里是一个很好的资源:

Recyclerview-listener

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
投票

实施View.OnClickListener为RetcyerView在this article项目的做法是非常好的。它还管理项目选择。


0
投票

是的你可以。但它不是好的做法。你可以设置你的点击监听器里ViewHolder你有getAdapterPosition(),这将有助于你得到当前点击项目。 (可能是你需要通过项目或别的东西)。更多详细信息,你可以看到blog


-2
投票

ü可以使用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);
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.