gpt4 book ai didi

java - 滚动 recyclerview 时滞后

转载 作者:行者123 更新时间:2023-11-30 10:46:13 25 4
gpt4 key购买 nike

这是我的适配器代码:

public class CatAdapter extends RecyclerView.Adapter<CatAdapter.ViewHolder> {
ArrayList<CatModel> objects_;
Context context;
Class res = R.drawable.class;

public class ViewHolder extends RecyclerView.ViewHolder {
TextView cat_text,cat_des;
ImageView cat_img;

public ViewHolder(View v) {
super(v);
cat_text = (TextView) v.findViewById(R.id.cat_txt);
cat_des = (TextView) v.findViewById(R.id.cat_des);
cat_img = (ImageView) v.findViewById(R.id.cat_img);
}
}

public CatAdapter(ArrayList<CatModel> arrayList, Context context) {
this.context = context;
objects_ = arrayList;
}

@Override
public CatAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cat_list_view, parent, false);
return new ViewHolder(v);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.cat_text.setText(objects_.get(position).txt);
holder.cat_des.setText(objects_.get(position).des);
try {
Field field = res.getField(objects_.get(position).img);
int drawableId = field.getInt(null);
holder.cat_img.setImageDrawable(context.getResources().getDrawable(drawableId));
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public int getItemCount() {
return objects_.size();
}
}

CatModel

public class CatModel {
public String txt,img,des;
}

CatModel.img 是我将它们放入 R.strings 中的 drawables 的 ID。我的所有项目 int arraylist 大约有 20 个项目,我的 drawables 是优化的 SVG,我将其转换为 vector drawable。但是当我滚动时它并不流畅。我可以做些什么来优化它?

最佳答案

您需要直接使用资源访问您的可绘制对象,而不是反射。

您应该将可绘制对象放在相应的“可绘制对象”文件夹中(drawable-xhdpi、drawable-xxhdpi 等)。然后在您的对象中引用与每个可绘制对象关联的 int:

public class CatModel {
public String txt,des;
public int drawable;
}

可绘制对象是您的可绘制对象之一,例如

CatModel catModel = new CatModel();
catModel.drawable = R.drawable.my_drawable_1;

等等。

然后在你的适配器中你可以像这样使用它:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.cat_text.setText(objects_.get(position).txt);
holder.cat_des.setText(objects_.get(position).des);
holder.img.setImageResource(objects_.get(position).drawable);
}

关于java - 滚动 recyclerview 时滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com