在我们的适配器中使用android.support.v7.widget.RecyclerView.ViewHolder时,它是否需要像我们之前那样进行视图标记。 或者图书馆是在后端自动完成的吗?
答案 0 :(得分:1)
您不需要view.setTag(viewHolder),只需绑定onBindViewHolder(ViewHolder holder,int position)中的数据。 PS:你应该编辑问题的标题来描述你的问题。
答案 1 :(得分:0)
如果您还在适配器中扩展RecyclerView.Adapter
,则无需再使用ViewHolder标记View。 RecyclerView适配器要求您实现一些方法,这些方法可指导您创建和绑定视图持有者。
onCreateViewHolder(ViewGroup viewGroup, int i)
这是您向View充气并创建ViewHolder的地方 - RecyclerView.ViewHolder的构造函数要求您传入视图。onBindViewHolder(ViewHolder holder, int i)
您执行将数据绑定到持有者所需的所有操作getItemCount()
返回RecyclerView中的项目数适配器看起来像这样:
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);
}
}
}