我需要能够动态地在我的expandableListAdapter中创建和删除组。我查看了所有可以找到的信息并将其卡住。我不需要特定的代码,只是要指出正确的方向。ExpandableListAdapter添加/删除组
回答
首先,我们需要一些数据结构(保留对它们的引用以备后用)。
headerData = new ArrayList<HashMap<String, String>>();
childData = new ArrayList<ArrayList<HashMap<String, Object>>>();
headerData是组的列表 - HashMap中使用,因为每个组可以具有多个显示值,其中的每一个被映射到由键布局。
childData是属于每个组的项目列表。它是一个列表列表,每个列表都包含HashMaps - 与组类似,每个子项可以具有多个由键映射的显示值。
我们在创建时将这些数据结构提供给我们的ExpandableListAdapter。我们还告诉适配器应如何映射显示值;在这个例子中,组和孩子都有两个显示值,分别是关键字“name”和“fields”,它们被映射到提供的布局中的text1和text2上。
adapter = new SimpleExpandableListAdapter(SearchLogs.this,
headerData, R.layout.customlayout_group,
new String[] { "name", "fields" }, new int[] { R.id.text1, R.id.text2 },
childData, R.layout.customlayout_child,
new String[] { "name", "fields" }, new int[] { R.id.text1, R.id.text2 });
setListAdapter(adapter); // assuming you are using ExpandableListActivity
到目前为止,我们有一个空的ExpandableList。我们可以通过创建HashMaps动态填充它(例如使用AsyncTask),为我们正在使用的键提供值,然后将它们添加到我们的列表中。
例如,添加一组一对夫妇的孩子,我们会......
HashMap<String, String> group = new HashMap<String, String>();
group.put("name", "whatever...");
group.put("fields", "...");
ArrayList<HashMap<String, Object>> groupChildren = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> child1 = new HashMap<String, Object>();
child1.put("name", "child name");
child1.put("fields", "...");
HashMap<String, Object> child2 = new HashMap<String, Object>();
child2.put("name", "another child");
groupChildren.add(child1);
groupChildren.add(child2);
headerData.add(group);
childData.add(groupChildren);
在headerData对应(按顺序)每个HashMap来在childData一个ArrayList,其中包含定义实际额外包含HashMap儿童。所以即使你添加了一个空组,记得要向childData添加一个对应的(空的)ArrayList。
我们只是在列表的末尾添加了一个组 - 只要我们注意插入headerData和childData中的相同位置,我们就可以轻松插入。删除组是相同的 - 一定要从headerData和childData的相同位置删除。
最后,通知适配器数据已更改,这将导致List刷新。如果使用AsyncTask,则必须在doInBackground之外完成(在这种情况下使用onProgressUpdate)。
adapter.notifyDataSetChanged();
我希望这可以帮助您朝着正确的方向前进。就数据存储方式而言,ExpandableList绝对是更复杂的Android视图之一。
- 1. 小组将不火“添加”或“删除”,添加或删除项目
- 2. 运行时添加/删除组件
- 3. 删除和添加项目到数组?
- 4. Vaadin使用buttonclick添加/删除组件
- 5. 在noflo-ui中添加/删除组件
- 6. 添加/删除ExtJS的组合价值
- 7. 添加/删除数组中的对象
- 8. System.DirectoryServices.Protocol从组中添加/删除用户
- 9. 添加/删除.append
- 10. 添加/删除类
- 11. 在DataGridComboboxColumn中删除或添加项添加或删除
- 12. 再次添加,删除和添加元素删除其事件
- 13. 添加淡入/淡出添加/删除
- 14. ExpandableListAdapter - 无法实例化类型ExpandableListAdapter
- 15. jQuery的添加/删除
- 16. JQuery删除和添加类
- 17. jQuery的添加删除类
- 18. jQuery的添加和删除
- 19. AndroidPlot:添加和删除XYSeries
- 20. jQuery的 - 添加/删除类
- 21. 添加和删除TR
- 22. 添加和删除与jQuery
- 23. 添加删除类Jquery
- 24. Android:添加和删除SharedPreference
- 25. KnockoutJS添加,编辑,删除
- 26. 添加后再次删除
- 27. jQuery添加/删除行
- 28. 删除Jquery添加的类
- 29. 添加和删除克隆?
- 30. 从JTable添加和删除