Android ListView子项目

Wil*_*Lew 5 java android

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

例如,如果我将一个项目添加到我的地图列表中,该项目显示"1"且子项目显示"A1",则将显示项目和子项目.但是如果我将一个新项目添加到名为"2"且具有子项"B2"的地图列表中,则"1"和"A1"将替换为"2"和"B2".ListView上仍然会有2个项目,但其中一个是空的,另一个是"2"和"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);
    }
Run Code Online (Sandbox Code Playgroud)

更改列表类型将不起作用,因为简单适配器专门使用地图列表.

小智 5

嗨我在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);
}
Run Code Online (Sandbox Code Playgroud)