RecyclerView结合CardView时如何在Adapter中为不同卡片设置图片
问题根因
所有卡片显示XML预设图片的核心错误在适配器的bindData方法:
- 代码中
iconImage.setImageResource(getIcon());的getIcon()没有指定调用主体,实际会尝试调用ViewHolder类自身的getIcon()方法,但ViewHolder类没有定义该方法,这行图片设置逻辑完全不生效,无法覆盖XML中预设的默认图片。 - 每个卡片对应的图标资源存储在方法传入的
ListElement实例item中,需要从该实例读取资源ID。
修复方案
- 修正
bindData方法中的图片赋值逻辑,从当前绑定的item对象中获取图标资源ID,修正后的完整bindData代码如下:
void bindData (final ListElement item) { // 从当前列表项数据中取图标资源,设置到ImageView iconImage.setImageResource(item.getIcon()); topic.setText(item.getTopic()); law1.setText(item.getLaw1()); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItemClick(item); } }); }
- 可选优化:如果不想出现列表滑动时默认图闪烁的问题,可以把item布局XML里ImageView标签下的
android:src="@drawable/metodologia"属性删掉,所有图片完全由适配器绑定数据时设置。 - 校验点:构造列表数据源时,传入
ListElement的icon参数必须是对应图片的drawable资源ID(即R.drawable.你的图片名格式),否则会触发资源找不到的崩溃。
内容的提问来源于stack exchange,提问作者Atenea
相关产品推荐
相关产品推荐

