如何在android recyclerView中缓存viewholder视图引用



From android docs

这个新的ViewHolder应该用一个新的View来构造,这个View可以表示给定类型的项。您可以手动创建一个新视图,也可以从XML布局文件中扩展它。

然后继续说:

新的ViewHolder将用于使用onBindViewHolder(ViewHolder, int, List)来显示适配器的项。由于它将被重用来显示数据集中的不同项,因此缓存对View的子视图的引用以避免不必要的findViewById(int)调用是一个好主意。

我可以有一个例子是什么意思缓存引用的子视图的视图而不是调用findViewbyId。我的意思是在viewholders构造函数中我已经调用了findviewbyId。像这样:

public class MyViewHolder extends RecyclerView.ViewHolder{
    public TextView review;
    public ImageView iv;

    public MyViewHolder(View view) {
        super(view);
        review = (TextView) view.findViewById(R.id.gridview_text);
        iv = (ImageView) view.findViewById(R.id.gridview_image);
    }
}

是不正确的吗?如何缓存?

你所发布的正是他们在viewholder中缓存视图的意思。这避免了每次需要将数据绑定到findViewById()时都必须使用它。

最新更新