我最近为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);
}
更改列表类型将不起作用,因为简单适配器专门使用“地图列表”。
嗨,我在存储在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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句