在recyclerview中附加onClickListener的最佳位置

Son*_*ony 5 android onclicklistener android-recyclerview

虽然我正在查看有关recycleler view的一些教程.其中一些使用了viewHolder构造函数来附加onClick侦听器,而其中一些使用了onBindViewHolder方法.哪个方法是附加onclicklistener的最佳位置.我真的很困惑

Kon*_*iak 7

onBindViewHolder每次将视图与数据绑定时,都会调用该方法.所以没有设置点击监听器的最佳位置.您不必为此设置OnClickListener多次View.所以最好的解决方案是在onCreateViewHolder方法中设置click listener .但重要的是你如何在点击监听器上实现.例如,如果您想从列表中获取某些模型,则可以使用getAdapterPosition()方法ViewHolder.

看看exmaple

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    final View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.view_magazine_list_item, null);

    final ViewHolder result = new ViewHolder(view);
    view.setOnClickListener(new OnClickListener(){
          @Override
          public void onClick(View v){
             YourObject yourobject = yourObjectsList.get(result.getAdapterPosition()));
          }
    });
    return result;
}
Run Code Online (Sandbox Code Playgroud)

  • `getPosition()` 现已弃用。 (2认同)