我需要能夠動態地在我的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添加和刪除