android.support.v7.widget.RecyclerView.ViewHolder
当在适配器中使用android.support.v7.widget.RecyclerView.ViewHolder时,是否需要像前面一样进行视图标记。 或者库是否在后端自动执行此操作?您不需要view.setTag(viewHolder),只需在onBindViewHolder(viewHolder,int位置)中绑定数据即可。android.support.v7.widget.RecyclerView.ViewHolder,android,android-adapter,Android,Android Adapter,当在适配器中使用android.support.v7.widget.RecyclerView.ViewHolder时,是否需要像前面一样进行视图标记。 或者库是否在后端自动执行此操作?您不需要view.setTag(viewHolder),只需在onBindViewHolder(viewHolder,int位置)中绑定数据即可。 PS:您应该编辑问题的标题,以详细描述您的问题。如果您还在适配器中扩展RecyclerView.Adapter,则无需再使用ViewHolder标记视图。Recycle
PS:您应该编辑问题的标题,以详细描述您的问题。如果您还在适配器中扩展
RecyclerView.Adapter
,则无需再使用ViewHolder标记视图。RecyclerView适配器要求您实现一些方法,这些方法指导您创建和绑定视图保持架
这是膨胀视图并创建ViewHolder的地方-RecyclerView.ViewHolder的构造函数要求您传入视图onCreateViewHolder(ViewGroup ViewGroup,int i)
执行将数据绑定到holder所需的所有操作onBindViewHolder(ViewHolder,int i)
返回回收视图中的项目数getItemCount()
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
...
@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
// TODO: inflate your view and create viewholder, most likely looks like this though
View v = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.recycler_view_item,
viewGroup,
false);
MyViewHolder vh = new MyViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MyViewHolder viewHolder, int i) {
// TODO: all your bind operations
}
@Override
public int getItemCount() {
// TODO: return total item count of your views
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
// TODO: whatever views you need to bind
public TextView mTextView;
public ImageView mImageView;
public MyViewHolder(View v) {
super(v); // done this way instead of view tagging
mTextView = (TextView) v.findViewById(R.id.textview);
mImageView = (ImageView) v.findViewById(R.id.imageview);
}
}
}
公共类MyAdapter扩展了RecyclerView.Adapter{
...
@凌驾
公共MyViewHolder onCreateViewHolder(视图组视图组,int i){
//TODO:膨胀视图并创建viewholder,但很可能是这样
视图v=LayoutInflater.from(viewGroup.getContext())。充气(
R.layout.recycler\u视图\u项目,
查看组,
假);
MyViewHolder vh=新的MyViewHolder(v);
返回vh;
}
@凌驾
BindViewHolder上的公共无效(MyViewHolder viewHolder,int i){
//TODO:所有绑定操作
}
@凌驾
public int getItemCount(){
//TODO:返回视图的项目总数
}
公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{
//TODO:需要绑定的任何视图
公共文本视图mTextView;
公共图像视图mImageView;
公共MyViewHolder(视图v){
super(v);//这样做,而不是视图标记
mTextView=(TextView)v.findviewbyd(R.id.TextView);
mImageView=(ImageView)v.findviewbyd(R.id.ImageView);
}
}
}
onBindViewHolder
将执行绑定,因此无需标记无法执行此操作!您将得到一个错误:viewHolder是抽象的;无法实例化
您可能正在实例化RecyclerView.ViewHolder
,而不是在内部静态类中声明的自定义ViewHolder。我将编辑示例以使其更清晰。