我最近为 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);
}
更改列表类型将不起作用,因为简单适配器专门使用映射列表。