【问题标题】:ImageView can not display image using SimpleAdapterImageView 无法使用 SimpleAdapter 显示图像
【发布时间】:2023-03-29 12:12:02
【问题描述】:

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_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/imgtou"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:baselineAlignBottom="true"
        android:paddingLeft="8dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="8dp"
            android:textColor="#1D1D1C"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/says"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="8px"
            android:textColor="#B4B4B9"
            android:textSize="14sp" />
    </LinearLayout>
</LinearLayout>

但是这些图片可以被android studio识别。

谁能帮忙找出问题?

【问题讨论】:

    标签: android android-studio simpleadapter


    【解决方案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}
      );
      

      或者您可以使用毕加索库来设置和加载图像。

      【讨论】:

        猜你喜欢
        • 2014-07-18
        • 2014-07-22
        • 2017-03-06
        • 2018-11-07
        • 2011-08-23
        • 2014-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多