ImageView 无法使用 SimpleAdapter 显示图像
Posted
技术标签:
【中文标题】ImageView 无法使用 SimpleAdapter 显示图像【英文标题】:ImageView can not display image using SimpleAdapter 【发布时间】:2021-08-12 11:20:09 【问题描述】:MainActivity.java
public class MainActivity extends AppCompatActivity
private String[] names = new String[]"name1", "name2", "name3";
private String[] says = new String[]"desc1", "desc2", "desc3";
private int[] imgIds = new int[]R.mipmap.head_icon1, R.mipmap.head_icon2, R.mipmap.head_icon3;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();
for (int i = 0; i < names.length; i++)
Map<String, Object> showitem = new HashMap<String, Object>();
showitem.put("touxiang", imgIds[i]);
showitem.put("name", names[i]);
showitem.put("says", says[i]);
listitem.add(showitem);
//create one simpleAdapter
SimpleAdapter myAdapter = new SimpleAdapter(getApplicationContext(), listitem, R.layout.list_item, new String[]"touxiang", "name", "says", new int[]R.id.imgtou, R.id.name, R.id.says);
ListView listView = (ListView) findViewById(R.id.list_test);
listView.setAdapter(myAdapter);
list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="horizontal">
<ImageView
android:id="@+id/imgtou"
android:layout_
android:layout_
android:baselineAlignBottom="true"
android:paddingLeft="8dp" />
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_
android:layout_
android:paddingLeft="8dp"
android:textColor="#1D1D1C"
android:textSize="20sp" />
<TextView
android:id="@+id/says"
android:layout_
android:layout_
android:paddingLeft="8px"
android:textColor="#B4B4B9"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
但是这些图片可以被android studio识别。
谁能帮忙找出问题?
【问题讨论】:
【参考方案1】:您在代码中使用了 SimpleAdapter。 但是使用是错误的。 SimpleAdapter 没有图像 id 作为参数。
请查看以下网址。https://developer.android.com/reference/android/widget/SimpleAdapter
public SimpleAdapter (Context context,
List<? extends Map<String, ?>> data,
int resource,
String[] from,
int[] to)
context(Context):View关联的上下文
使用此 SimpleAdapter 正在运行数据列表:地图列表。每个
List 中的条目对应于列表中的一行。地图
包含每一行的数据,并且应该包括所有条目
在“从”中指定
resource(int):视图的资源标识符
定义此列表项的视图的布局。布局文件
至少应包括“to”中定义的命名视图
from(String):将添加到 Map 的列名列表
与每个项目相关联。
to(int):应该显示的视图
“from”参数中的列。这些都应该是TextViews
。这
此列表中的前 N 个视图被赋予前 N 个视图的值
from 参数中的列。
但是您使用图像 ids 数组来“到”字段。
//create one simpleAdapter
SimpleAdapter myAdapter = new SimpleAdapter(
getApplicationContext(),
listitem,
R.layout.list_item,
new String[]"touxiang", "name", "says",
new int[]R.id.imgtou, R.id.name, R.id.says //You used wrong values. This should be textview ids.
);
因此,您不能将 SimpleAdapter 用于您的目的。
您应该根据自己的目的自定义适配器类。
【讨论】:
【参考方案2】:SimpleAdapter myAdapter = new SimpleAdapter(
getApplicationContext(),
listitem,
R.layout.list_item,
new String[]"touxiang", "name", "says",
new int[]R.mipmap.head_icon1, R.mipmap.head_icon2, R.mipmap.head_icon3
);
或者您可以使用毕加索库来设置和加载图像。
【讨论】:
以上是关于ImageView 无法使用 SimpleAdapter 显示图像的主要内容,如果未能解决你的问题,请参考以下文章
无法在 tableview 单元格中显示解析的 imageView
Swift 3 - 旋转图像在 ImageView 中无法正确显示