Android 在recyclerview中连接onClickListener的最佳位置
当我在看一些关于recycler视图的教程时,其中一些使用viewHolder构造函数来附加onClick侦听器,而一些使用onBindViewHolder方法。哪种方法是连接onclicklistener的最佳位置。我真的很困惑每次用数据绑定视图时都会调用方法Android 在recyclerview中连接onClickListener的最佳位置,android,onclicklistener,android-recyclerview,Android,Onclicklistener,Android Recyclerview,当我在看一些关于recycler视图的教程时,其中一些使用viewHolder构造函数来附加onClick侦听器,而一些使用onBindViewHolder方法。哪种方法是连接onclicklistener的最佳位置。我真的很困惑每次用数据绑定视图时都会调用方法onBindViewHolder。因此,没有设置click listener的最佳位置。对于一个视图,不必多次设置OnClickListener。因此,最好的解决方案是在onCreateViewHolder方法中设置click liste
onBindViewHolder
。因此,没有设置click listener的最佳位置。对于一个视图
,不必多次设置OnClickListener
。因此,最好的解决方案是在onCreateViewHolder
方法中设置click listener。但重要的是如何实现点击侦听器。例如,如果您想从列表中获取一些模型,可以使用ViewHolder
中的getAdapterPosition()
方法
看那棵枫树
@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;
}
在
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
}
}
在
recycleview
的ViewHolder
类中使用onClickListener
的最佳实践如下:-
public class ViewHolder extends RecyclerView.ViewHolder{
private View YOUR_VIEW;
public ViewHolder(@NonNull View itemView) {
super(itemView);
YOUR_VIEW = itemView.findViewById(R.id.YOUR_VIEW);
YOUR_VIEW.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext,"Position==>> "+getAdapterPosition(),Toast.LENGTH_LONG).show();
}
});
}
}
getPosition()
现在已被弃用。@BaselShishani谢谢