Android ExpandableListView – 寻找教程

我试图编程一个Android接口,使用一个可扩展列表和另一端的片段,所以我可以加载不同的资源,通过点击可扩展列表的孩子。 但不幸的是,我无法find任何有关此列表的任何好教程。 是的,我已经看了API演示,我已经用BaseExpandableListAdapter做了一个正常的列表,但仍然需要理解这些列表,它没有一个好的教程是很难的,你有任何好的或我可以检查的信息?

您可以通过以下链接find可扩展列表视图的工作示例:

  • ExpandableListView

  • ANDROID中的展开式ListView

  • 在Android中,Android Expandable ListView简单示例。

为了点击孩子,你可以这样处理。

getExpandableListView().setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // your code... } }); 

希望这会帮助你。 谢谢..

创build项目列表

 List<ParentItem> itemList = new ArrayList<ParentItem>(); ParentItem parent1 = new ParentItem(); parent1.getChildItemList().add(new ChildItem()); parent1.getChildItemList().add(new ChildItem()); parent1.getChildItemList().add(new ChildItem()); ParentItem parent2 = new ParentItem(); parent2.getChildItemList().add(new ChildItem()); parent2.getChildItemList().add(new ChildItem()); parent2.getChildItemList().add(new ChildItem()); itemList.add(parent1); itemList.add(parent2); ExpandableListViewAdapter adapter = new ExpandableListViewAdapter(context, itemList); 

数据对象

 public class ParentItem { private List<ChildItem> childItemList; public ParentItem() { childItemList = new ArrayList<ChildItem>(); } public List<ChildItem> getChildItemList() { return childItemList; } } public class ChildItem { // filll with your data } 

适配器

 public class ExpandableListViewAdapter extends BaseExpandableListAdapter { private static final class ViewHolder { TextView textLabel; } private final List<ParentItem> itemList; private final LayoutInflater inflater; public ExpandableListViewAdapter(Context context, List<ParentItem> itemList) { this.inflater = LayoutInflater.from(context); this.itemList = itemList; } @Override public ChildItem getChild(int groupPosition, int childPosition) { return itemList.get(groupPosition).getChildItemList().get(childPosition); } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public int getChildrenCount(int groupPosition) { return itemList.get(groupPosition).getChildItemList().size(); } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) { View resultView = convertView; ViewHolder holder; if (resultView == null) { resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id holder = new ViewHolder(); holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id resultView.setTag(holder); } else { holder = (ViewHolder) resultView.getTag(); } final ChildItem item = getChild(groupPosition, childPosition); holder.textLabel.setText(item.toString()); return resultView; } @Override public ParentItem getGroup(int groupPosition) { return itemList.get(groupPosition); } @Override public int getGroupCount() { return itemList.size(); } @Override public long getGroupId(final int groupPosition) { return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View theConvertView, ViewGroup parent) { View resultView = theConvertView; ViewHolder holder; if (resultView == null) { resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id holder = new ViewHolder(); holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id resultView.setTag(holder); } else { holder = (ViewHolder) resultView.getTag(); } final ParentItem item = getGroup(groupPosition); holder.textLabel.setText(item.toString()); return resultView; } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } } 

给你

 ============================== +Parent 1 ============================== -child 1.1 ============================== -child 1.2 ============================== -child 1.3 ============================== +Parent 2 ============================== -child 2.1 ============================== -child 2.2 ============================== -child 2.3 ============================== 

这样你可以处理事件:

 getExpandableListView().setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // your code... } }