public List<? extends Map<String, ?>> generateDataList() {
        ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();;
        int rowCounter = drawableIds.length;
        for (int i = 0; i < rowCounter; i++) {
            HashMap<String, Object> hmap = new HashMap<String, Object>();
            hmap.put("col1", drawableIds[i]); 
            hmap.put("col2", this.getResources().getString(nameIds[i]));
            hmap.put("col3", this.getResources().getString(msgIds[i]));
            // hmap.put("co14", this.getResources().getString(msgIds[i]));
            list.add(hmap);
        }
        return list;
    }

解决方案 »

  1.   

    这不就素给ListView设置数据源吗~
    SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
    这个适配器第二个参数需要一个List<? extends Map<String, ?>> data,此List每项是保存一列所需的值的Map
    于是有了这句ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    然后rowCounter有多少行就加多少次数据。每次加一行的数据。
    HashMap<String, Object> hmap = new HashMap<String, Object>();
    这个保存了列名和此列显示的值。这个列名要在SimpleAdapter构造器的第四个参数from字符串数组值中。
    你这个有3列:col1、col2、col3,值分别是你put后的第二个参数。
    把所有列弄完了,就把map add到data中,就是把一行数据加入到数据源中。