android - RecyclerView 工作不正常,项目重复,不断变化
问题描述
当我开始滚动时,一些项目被重复,没有显示正确的结果,我已经尝试了一切,比如在Adapter
类中覆盖这些方法:
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
甚至我也尝试过传入setHasStableIds(true)
构造函数,但未能获得预期的结果。
这是我的Adapter
课
public class NickzAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<PhotozData> list;
private Context context;
private NickzViewHolder holder;
public NickzAdapter(Context context, List<PhotozData> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View row= inflater.inflate(R.layout.single_row,parent, false);
holder = new NickzViewHolder(row);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
this.holder.name.setText(list.get(position).getName());
//Log.d("Bind name",list.get(position).getName());
Glide.with(context).load(list.get(position).getImageUri()).into(this.holder.photo);
}
@Override
public int getItemCount() {
return list.size();
}
}
这是我的ViewHolder
课
public class NickzViewHolder extends RecyclerView.ViewHolder {
public ImageView photo;
public TextView name, date, time;
public NickzViewHolder(@NonNull View itemView) {
super(itemView);
photo = itemView.findViewById(R.id.photo);
date = itemView.findViewById(R.id.photo_date);
name = itemView.findViewById(R.id.photo_name);
time = itemView.findViewById(R.id.photo_time);
}
我会很感激你的帮助,谢谢
解决方案
测试一下
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
holder.setIsRecyclable(false);
holder.name.setText(list.get(position).getName());
//Log.d("Bind name",list.get(position).getName());
Glide.with(context).load(list.get(position).getImageUri()).into(holder.photo);
}
推荐阅读
- javascript - 如何在 Editor.js 中添加新块
- java - 如何以另一种语言获取 Java 日期
- qt - QML 自动换行和 TextArea 和 Margins
- javascript - Laravel 视图显示在 chrome 开发工具上,而不是重定向到刀片
- symfony - 我的 Symfony 应用程序首页的直接链接是什么?
- batch-file - 如何在 Windows 上使用 cmd 查找屏幕亮度?
- java - 使用相同的 api 地址执行两种不同的方法
- java - 我们可以在代码中不使用 Webdriver 接口的情况下运行 selenium 测试吗?
- java - 在while循环的条件下,有没有办法在用户没有输入有效值时显示错误消息
- angularjs - 在 Angular 1.x 中访问范围函数之外的变量