虽然我正在查看有关recycleler view.some的一些教程,但是他们使用了viewHolder构造函数来附加onClick侦听器,而其中一些使用了onBindViewHolder方法。哪个方法是附加onclicklistener的最佳位置。我真的很困惑
答案 0 :(得分:7)
每次将视图与数据绑定时,都会调用方法onBindViewHolder
。所以没有设置点击监听器的最佳位置。您不必为OnClickListener
View
多次设置onCreateViewHolder
。所以最好的解决方案是在getAdapterPosition()
方法中设置点击监听器。但重要的是你如何在点击监听器上实现。例如,如果您想从列表中获取某些模型,则可以使用ViewHolder
中的@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;
}
方法。
看看exmaple
{{1}}
答案 1 :(得分:1)
在ViewHolder
中是更好的地方:
public static class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
//views declare here
public ItemViewHolder(View convertView)
{
super(convertView);
... ...
convertView.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
//do something to view here
//also you can get view position by 'getPosition()' here
}
}
答案 2 :(得分:0)
在onClickListener
的{{1}}类内使用ViewHolder
的最佳实践,如下所示:-
Recyclview