ArrayMap 与 Gridview 中的 ArrayAdapter

ArrayMap with ArrayAdapter in Gridview

我想在具有两列的 GridView 中显示 key/value 对 ArrayMap 和 ArrayAdapter。

ArrayMap<String, String> testmap = new ArrayMap<String, String>();
    testmap.put("one", "eins");
    testmap.put("two", "drei");
    testmap.put("three", "vier");
    testmap.put("four", "fünf");
    testmap.put("five", "sechs");

    ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(this,     android.R.layout.simple_list_item_1, testmap);
    GridView gridView = (GridView) findViewById(R.id.list);
    gridView.setAdapter(itemsAdapter);

这是错误信息:

Error:(49, 45) error: no suitable constructor found for  
ArrayAdapter(NumbersActivity,int,ArrayMap<String,String>)
constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not          applicable
(argument mismatch; ArrayMap<String,String> cannot be converted to int)
constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not    applicable
(argument mismatch; ArrayMap<String,String> cannot be converted to  String[])
constructor ArrayAdapter.ArrayAdapter(Context,int,List<String>) is not applicable
(argument mismatch; ArrayMap<String,String> cannot be converted to    List<String>)

感谢您的帮助!

您需要创建地图列表才能使用ArrayAdapter

ArrayList<ArrayMap<String, String>> testmap = new ArrayList<>();

    ArrayMap<String, String> map = new ArrayMap<>();
    map.put("one", "eins");
    map.put("two", "drei");
    map.put("three", "vier");
    map.put("four", "fünf");
    map.put("five", "sechs");

    testmap.add(map);

    ArrayAdapter<ArrayMap<String, String>> itemsAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, testmap);
    gridView.setAdapter(itemsAdapter);

并且为了保留地图中的值插入,请使用 LinkedHashMap

编辑

要在不同的单元格中显示值,请在每次将值放入其中时创建一个新地图

ArrayMap<String, String> map = new ArrayMap<>();
    map.put("one", "eins");
    testmap.add(map);
    map = new ArrayMap<>();
    map.put("two", "drei");
    testmap.add(map);
    map = new ArrayMap<>();
    map.put("three", "vier");
    testmap.add(map);
    map = new ArrayMap<>();
    map.put("four", "fünf");
    testmap.add(map);
    map = new ArrayMap<>();
    map.put("five", "sechs");
    testmap.add(map);