Android ListView Subitems



我最近为Android应用程序创建了一个新的ListView对象,但是我遇到了一些错误。当我尝试使用一个简单的适配器来创建一个项目,其中包括我的列表中的子项时,新创建的项目与其他项目重叠。我正在使用map列表来创建项目。

例如,如果我在映射列表中添加一个显示"1"的项目,并添加一个显示"A1"的子项,则将显示该项目和子项。但是,如果我在地图列表中添加一个名为"2"的新项目,并添加子项"B2",那么"1"one_answers"A1"将被"2"one_answers"B2"取代。ListView上仍然会有2个项目,但其中一个是空的,另一个是"2"one_answers"B2"

下面是我的代码:
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv = (ListView)findViewById(R.id.listView1);
        Map<String, String> datum = new HashMap<String, String>();
        datum.put("RouterName", "Test1");
        datum.put("RouterIP", "SubTest1");
        data.add(datum);
        Map<String, String> datum2 = new HashMap<String, String>();
        datum.put("RouterName", "Test2");
        datum.put("RouterIP", "SubTest2");
        data.add(datum2);
        SimpleAdapter adapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] {"RouterName", "RouterIP"}, new int[] {android.R.id.text1, android.R.id.text2});
        lv.setAdapter(adapter);
    }

更改列表类型将不起作用,因为简单适配器专门使用Map list。

嗨,我在Hashmap中存储时发现了一些小错误。HashMap对象没有创建。上一个实例正在被删除。

请使用以下代码。希望对你有帮助。

    ArrayList<HashMap<String, String>> data;
    private String[] titleArray,subItemArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);
    ListView lv = (ListView)findViewById(R.id.listview);
    data = new ArrayList<HashMap<String, String>>();
    titleArray=new String[]{"Test1","Test2"};
    subItemArray=new String[]{"SubTest1","SubTest2"};
    for(int i=0;i<titleArray.length;i++){
        HashMap<String,String> datum = new HashMap<String, String>();
        datum.put("RouterName", titleArray[i]);
        datum.put("RouterIP", subItemArray[i]);
        data.add(datum);
    }
    SimpleAdapter adapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] {"RouterName", "RouterIP"}, new int[] {android.R.id.text1, android.R.id.text2});
    lv.setAdapter(adapter);
}

最新更新