如何使用drawable在本地更改RecyclerView中的图像
Posted
技术标签:
【中文标题】如何使用drawable在本地更改RecyclerView中的图像【英文标题】:How to change an image in RecyclerView locally using drawable 【发布时间】:2021-03-18 20:29:36 【问题描述】:我正在尝试使用本地可绘制图像更改 RecyclerView
中的图像。所以在项目中RecyclerView
正在从本地数据库中获取数据,当布尔列变为真时,它应该变成一个勾号。我的项目视图如下所示。
当该列为真时,时钟符号变为滴答声。这是我尝试过的代码:
我的适配器代码:
public class HawbListAdapter extends RecyclerView.Adapter<HawbListAdapter.MyViewHolder>
private Context context;
private ArrayList<HawbLists> hawbLists;
private DatabaseHelper mDatabaseHelper;
public HawbListAdapter(Context context, ArrayList<HawbLists> hawbLists)
this.context = context;
this.hawbLists = hawbLists;
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.hawb_list, parent, false);
return new MyViewHolder(v);
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position)
holder.Hcode.setText(hawbLists.get(position).getHawbCode());
holder.name.setText(hawbLists.get(position).getName());
if (hawbLists.get(position).isTick())
holder.timeImage.setImageResource(R.drawable.ic_right);
//Picasso.get().load(hawbLists.get(position).isTick()).into(holder.timeImage);
//holder.timeImage.setImageResource(R.drawable.ic_right);
@Override
public int getItemCount()
return hawbLists.size();
public static class MyViewHolder extends RecyclerView.ViewHolder
private TextView Hcode;
private TextView name;
private ImageView timeImage;
public MyViewHolder(@NonNull View itemView)
super(itemView);
Hcode = itemView.findViewById(R.id.hawbCode12345);
name = itemView.findViewById(R.id.name_hawb_list);
timeImage = itemView.findViewById(R.id.timeImage);
即使我正在使用它
if (hawbLists.get(position).isTick())
holder.timeImage.setImageResource(R.drawable.ic_right);
其中一项为真,它仍然显示相同的时钟(等待)符号,但如果我使用这个:
if (!hawbLists.get(position).isTick())
holder.timeImage.setImageResource(R.drawable.ic_right);
那么无论真假,它们都会变成刻度线。无法弄清楚我做错了什么。
【问题讨论】:
添加else部分并在其中设置未选中的图像。 【参考方案1】:试试这个:
if (hawbLists.get(position).isTick())
holder.timeImage.setImageResource(R.drawable.ic_right);
else
holder.timeImage.setImageResource(R.drawable.ic_not_ticked);
你知道回收的概念吗?查看您在设备中的列表,看看您有多少行!现在添加一个(作为交换视图),它就是您拥有的所有视图。这意味着无论您有多少条目 (hawbLists.size()
),它们都会在您滚动时创建/回收。因此,您必须考虑项目子项的所有可能情况。因为否则回收的view
不会改变view
状态并且可能会显示不相关的行为。
【讨论】:
以上是关于如何使用drawable在本地更改RecyclerView中的图像的主要内容,如果未能解决你的问题,请参考以下文章
将颜色过滤器添加到 Drawable 会更改使用相同 Drawable 的所有 Button
如何在 Fragment 中使用 Recycler View [重复]