我最近为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);
}