내 expandableListAdapter에서 그룹을 동적으로 생성하고 삭제할 수 있어야합니다. 나는 내가 찾아 낼 수있는 모든 것들을 보았다. 필자는 특정 코드가 필요 없지만 올바른 방향으로 향하게해야합니다.ExpandableListAdapter 그룹 추가/삭제
답변
먼저, 몇 가지 데이터 구조가 필요합니다 (나중에 사용하기 위해이 구조를 참조하십시오).
headerData = new ArrayList<HashMap<String, String>>();
childData = new ArrayList<ArrayList<HashMap<String, Object>>>();
headerData 그룹의리스트 인 - 각 그룹은 각각의 키에 의한 레이아웃에 매핑되며, 복수의 디스플레이 된 값을 가질 수 있기 때문에 HashMap에 사용된다.
childData는 각 그룹에 속한 항목의 목록입니다. HashMaps를 포함하고있는 목록의 목록 - 그룹과 마찬가지로 각 자식은 키로 매핑되는 여러 표시 값을 가질 수 있습니다.
우리는 이러한 데이터 구조를 생성시 ExpandableListAdapter에 제공합니다. 또한 디스플레이 값을 매핑하는 방법을 어댑터에 알려줍니다. 이 예에서 그룹과 하위는 모두 제공된 레이아웃의 text1과 text2에 매핑되는 "name"및 "fields"키라는 두 가지 표시 값을가집니다.
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
지금까지는 비어있는 확장형 목록이 있습니다. 우리는 사용중인 키의 값을 제공하고 목록에 추가하는 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);
실제를 정의하는 추가 HashMaps을을 포함 childData의 ArrayList를,로 (주문에 의해) headerData의 대응의 각의 HashMap 어린이. 따라서 빈 그룹을 추가하는 경우에도 해당하는 (빈) ArrayList를 childData에 추가해야합니다.
목록의 끝에 그룹을 추가했습니다. headerData와 childData에서 같은 위치에 삽입하는 것을 염두에두기 만하면 쉽게 삽입 할 수 있습니다. 그룹을 제거하는 것은 동일합니다. headerData와 childData의 동일한 위치에서 제거해야합니다.
마지막으로 데이터가 변경되었음을 어댑터에 알리면 List가 새로 고쳐집니다. AsyncTask를 사용하는 경우 doInBackground 외부에서 수행해야합니다 (이 경우 onProgressUpdate 사용).
adapter.notifyDataSetChanged();
나는 이것이 당신이 올바른 방향으로 이동하는 데 도움이되기를 바랍니다. ExpandableList는 데이터 저장 방식 측면에서 볼 때 더 복잡한 Android보기 중 하나입니다.
- 1. 사용자 정의 ExpandableListAdapter 작성 방법
- 2. cakephp에있는 그룹 그룹
- 3. Grep 그룹 그룹
- 4. 그룹
- 5. 그룹
- 6. 그룹
- 7. 다른 그룹 용량의 그룹 조합
- 8. 코드 그룹 ion_auth 관리 그룹
- 9. 그룹 이름을 그룹 ID (gid)
- 10. 레일스 정규식 : 그룹 내부 그룹
- 11. 그룹 열과 그룹 열이 섞이지 않음
- 12. BOBJ SDK 그룹 추가 구성원 부모 그룹
- 13. WPF : 그룹 상자에서로드 데이터 그리드는 그룹 상자가
- 14. 플렉스 4 그룹 내에서 그룹 크기 조정
- 15. C# WPF Toolkit DataGrid - 그룹 내부 그룹?
- 16. 그룹 및 하위 그룹 동적 루프 Foreach
- 17. AD 그룹 또는 Team Foundation 그룹?
- 18. 그룹 폴더가 그룹 폴더에 나타나지 않습니다. Xcode
- 19. 어떻게 Linq에 2 그룹 필드와 그룹?
- 20. Drupal의 그룹 및 그룹 관리자 구현
- 21. PHP : 동적 그룹 드롭 옵트 그룹
- 22. 그룹 별 그룹 및 고유 값
- 23. MySQL : 연속 일 및 그룹 수별 그룹
- 24. 그룹 상자의 색상 변경 그룹 제목 이름
- 25. 그룹 해시
- 26. MySQL의 그룹
- 27. 그룹 검출
- 28. 그룹 연합
- 29. 레일 그룹
- 30. 그룹 XDocument.Descandants