请指导或分享android中多级可扩展显示的合适示例.谢谢, 解决方案 我找到了解决方案,我正在上传所有 java 类 所以检查所有 java 或者你可以检查 这个:1:MainActivity.javapublic class MainActivity extends Activity {@覆盖protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Object obj = new Object();obj.children = new ArrayList();for(int i = 0;i();for(int j=0;j();for(int k=0;k2: Object.java公共类对象{公共字符串标题;//使用 getter 和 setter 代替公共列表孩子们;//和上面一样公共对象(){孩子 = 新的 ArrayList();}}3:RootAdapter.javapublic class RootAdapter extends BaseExpandableListAdapter {私有对象根;私有最终 LayoutInflater 充气器;公共类条目{公共最终 CustExpListview cls;public final SecondLevelAdapter sadpt;公共条目(CustExpListview cls,SecondLevelAdapter sadpt){this.cls = cls;this.sadpt = 悲伤;}}公共条目[] lsfirst;公共 RootAdapter(上下文上下文,对象根,ExpandableListView.OnGroupClickListener grpLst,ExpandableListView.OnChildClickListener childLst, ExpandableListView.OnGroupExpandListener grpExpLst) {this.root = 根;this.inflater = LayoutInflater.from(context);lsfirst = 新条目[root.children.size()];for (int i = 0; i < root.children.size(); i++) {最终的 CustExpListview celv = 新的 CustExpListview(context);SecondLevelAdapter adp = new SecondLevelAdapter(root.children.get(i),context);celv.setAdapter(adp);celv.setGroupIndicator(null);celv.setOnChildClickListener(childLst);celv.setOnGroupClickListener(grpLst);celv.setOnGroupExpandListener(grpExpLst);lsfirst[i] = 新条目(celv,adp);}}@覆盖公共对象 getChild(int groupPosition, int childPosition) {返回 root.children.get(groupPosition);}@覆盖public long getChildId(int groupPosition, int childPosition) {返回子位置;}@覆盖public View getChildView(int groupPosition, int childPosition, boolean isLastChild,视图 convertView,ViewGroup 父级){//二级列表返回 lsfirst[groupPosition].cls;}@覆盖公共 int getChildrenCount(int groupPosition) {返回 1;}@覆盖公共对象 getGroup(int groupPosition) {返回 root.children.get(groupPosition);}@覆盖公共 int getGroupCount() {返回 root.children.size();}@覆盖公共长 getGroupId(int groupPosition) {返回组位置;}@覆盖public View getGroupView(int groupPosition, boolean isExpanded, View convertView,视图组父级) {//第一级视图布局 = convertView;GroupViewHolder 持有人;最终对象项 = (Object) getGroup(groupPosition);如果(布局==空){layout = inflater.inflate(R.layout.item_root, parent, false);持有人 = 新的 GroupViewHolder();holder.title = (TextView) layout.findViewById(R.id.itemRootTitle);layout.setTag(holder);} 别的 {持有人 = (GroupViewHolder) layout.getTag();}holder.title.setText(item.title.trim());返回布局;}私有静态类 GroupViewHolder {文本视图标题;}@覆盖公共布尔 hasStableIds() {返回真;}@覆盖公共布尔 isChildSelectable(int groupPosition, int childPosition) {返回真;}}4:SecondLevelAdapter.javapublic class SecondLevelAdapter extends BaseExpandableListAdapter {公共对象子项;上下文 mContext;LayoutInflater 充气机;公共第二级适配器(对象子级,上下文上下文){this.child = 孩子;this.mContext=上下文;充气器 = LayoutInflater.from(mContext);}@覆盖公共对象 getChild(int groupPosition, int childPosition) {返回 child.children.get(groupPosition).children.get(childPosition);}@覆盖public long getChildId(int groupPosition, int childPosition) {返回子位置;}//第三层@覆盖public View getChildView(int groupPosition, int childPosition, boolean isLastChild,视图 convertView,ViewGroup 父级){视图布局 = convertView;final Object item = (Object) getChild(groupPosition, childPosition);ChildViewHolder 持有人;如果(布局==空){layout = inflater.inflate(R.layout.item_child, parent, false);持有人 = 新的 ChildViewHolder();holder.title = (TextView) layout.findViewById(R.id.itemChildTitle);layout.setTag(holder);} 别的 {持有人 = (ChildViewHolder) layout.getTag();}holder.title.setText(item.title.trim());返回布局;}@覆盖公共 int getChildrenCount(int groupPosition) {返回 child.children.get(groupPosition).children.size();}@覆盖公共对象 getGroup(int groupPosition) {返回 child.children.get(groupPosition);}@覆盖公共 int getGroupCount() {返回 child.children.size();}@覆盖公共长 getGroupId(int groupPosition) {返回组位置;}//第二级@覆盖public View getGroupView(int groupPosition, boolean isExpanded, View convertView,视图组父级) {视图布局 = convertView;ViewHolder 支架;最终对象项 = (Object) getGroup(groupPosition);如果(布局==空){layout = inflater.inflate(R.layout.item_parent, parent, false);持有人 = 新的 ViewHolder();holder.title = (TextView) layout.findViewById(R.id.itemParentTitle);layout.setTag(holder);} 别的 {持有人 = (ViewHolder) layout.getTag();}holder.title.setText(item.title.trim());返回布局;}@覆盖public void registerDataSetObserver(DataSetObserver观察者){super.registerDataSetObserver(观察者);}@覆盖public void unregisterDataSetObserver(DataSetObserver观察者){Log.d("SecondLevelAdapter", "取消注册观察者");如果(观察者!= null){super.unregisterDataSetObserver(观察者);}}@覆盖公共布尔 hasStableIds() {返回真;}@覆盖公共布尔 isChildSelectable(int groupPosition, int childPosition) {返回真;}私有静态类 ViewHolder {文本视图标题;}私有静态类 ChildViewHolder {文本视图标题;}}5 常量.java公共类常量{static String[] state = {"A","B","C"};静态字符串 [][] 父 = {{"aa","bb","cc","dd","ee"},{"ff","gg","hh","ii","jj"},{"kk","ll","mm","nn","oo"}};静态字符串[][][] child = {{{"aaa","aab","aac","aad","aae"},{"bba","bbb","bbc","bbd","bbe"},{"cca","ccb","ccc","ccd","cce","ccf","ccg"},{"dda","ddb","dddc","ddd","dde","ddf"},{"eea","eeb","eec"}},{{"ffa","ffb","ffc","ffd","ffe"},{"gga","ggb","ggc","ggd","gge"},{"hha","hhb","hhc","hhd","hhe","hhf","hhg"},{"iia","iib","iic","iid","iie","ii"},{"jja","jjb","jjc","jjd"}},{{"kka","kkb","kkc","kkd","kke"},{"lla","llb","llc","lld","lle"},{"mma","mmb","mmc","mmd","mme","mmf","mmg"},{"nna","nnb","nnc","nnd","nne","nnf"},{"ooa","oob"}}};}5:item_parent.</LinearLayout>How to display more than 3- level of expandable list view, I am getting only examples for 3-Levels expandable.Referring this :three-level-expandable-listIn this example he adding one more Expandable list in getChildView method of ParentLevel BaseExpandableListAdapter : CustExpListview SecondLevelexplv = new CustExpListview(Home.this);SecondLevelexplv.setAdapter(new SecondLevelAdapter());SecondLevelexplv.setGroupIndicator(null);return SecondLevelexplv;so Similarily I'am Adding one more Expandable list in the getChildView method of SecondLevelAdapter.Its Working But View is not coming proper like 3- level of expandable list view.And I have Read this:3-level-expandable-list-view-with-swipe-featuremulti-level-expandablelistview-in-androidissue-with-expanding-multi-level-expandablelistviewPlease guideline or share me suitable example for Multi-level expandable display in android.Thanks, 解决方案 I Found Solution and I am uploading all java class So check all java Or U can check this :1: MainActivity.javapublic class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Object obj = new Object(); obj.children = new ArrayList<Object>(); for(int i = 0;i<Constant.state.length;i++) { Object root = new Object(); root.title = Constant.state[i]; root.children = new ArrayList<Object>(); for(int j=0;j<Constant.parent[i].length;j++) { Object parent = new Object(); parent.title=Constant.parent[i][j]; parent.children = new ArrayList<Object>(); for(int k=0;k<Constant.child[i][j].length;k++) { Object child = new Object(); child.title =Constant.child[i][j][k]; parent.children.add(child); } root.children.add(parent); } obj.children.add(root); } if (!obj.children.isEmpty()) { final ExpandableListView elv = (ExpandableListView) findViewById(R.id.expList); elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return true; /* or false depending on what you need */; } }); ExpandableListView.OnGroupClickListener grpLst = new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView eListView, View view, int groupPosition, long id) { return true/* or false depending on what you need */; } }; ExpandableListView.OnChildClickListener childLst = new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView eListView, View view, int groupPosition, int childPosition, long id) { return true/* or false depending on what you need */; } }; ExpandableListView.OnGroupExpandListener grpExpLst = new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { } }; final RootAdapter adapter = new RootAdapter(this, obj, grpLst, childLst, grpExpLst); elv.setAdapter(adapter);}} }2: Object.javapublic class Object {public String title; // use getters and setters insteadpublic List<Object> children; // same as abovepublic Object() { children = new ArrayList<Object>();}}3:RootAdapter.javapublic class RootAdapter extends BaseExpandableListAdapter {private Object root;private final LayoutInflater inflater;public class Entry { public final CustExpListview cls; public final SecondLevelAdapter sadpt; public Entry(CustExpListview cls, SecondLevelAdapter sadpt) { this.cls = cls; this.sadpt = sadpt; }}public Entry[] lsfirst;public RootAdapter(Context context, Object root, ExpandableListView.OnGroupClickListener grpLst, ExpandableListView.OnChildClickListener childLst, ExpandableListView.OnGroupExpandListener grpExpLst) { this.root = root; this.inflater = LayoutInflater.from(context); lsfirst = new Entry[root.children.size()]; for (int i = 0; i < root.children.size(); i++) { final CustExpListview celv = new CustExpListview(context); SecondLevelAdapter adp = new SecondLevelAdapter(root.children.get(i),context); celv.setAdapter(adp); celv.setGroupIndicator(null); celv.setOnChildClickListener(childLst); celv.setOnGroupClickListener(grpLst); celv.setOnGroupExpandListener(grpExpLst); lsfirst[i] = new Entry(celv, adp); }}@Overridepublic Object getChild(int groupPosition, int childPosition) { return root.children.get(groupPosition);}@Overridepublic long getChildId(int groupPosition, int childPosition) { return childPosition;}@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { // second level list return lsfirst[groupPosition].cls;}@Overridepublic int getChildrenCount(int groupPosition) { return 1;}@Overridepublic Object getGroup(int groupPosition) { return root.children.get(groupPosition);}@Overridepublic int getGroupCount() { return root.children.size();}@Overridepublic long getGroupId(int groupPosition) { return groupPosition;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // first level View layout = convertView; GroupViewHolder holder; final Object item = (Object) getGroup(groupPosition); if (layout == null) { layout = inflater.inflate(R.layout.item_root, parent, false); holder = new GroupViewHolder(); holder.title = (TextView) layout.findViewById(R.id.itemRootTitle); layout.setTag(holder); } else { holder = (GroupViewHolder) layout.getTag(); } holder.title.setText(item.title.trim()); return layout;}private static class GroupViewHolder { TextView title;}@Overridepublic boolean hasStableIds() { return true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) { return true;}}4: SecondLevelAdapter.javapublic class SecondLevelAdapter extends BaseExpandableListAdapter {public Object child;Context mContext;LayoutInflater inflater;public SecondLevelAdapter(Object child,Context context) { this.child = child; this.mContext=context; inflater = LayoutInflater.from(mContext);}@Overridepublic Object getChild(int groupPosition, int childPosition) { return child.children.get(groupPosition).children.get(childPosition);}@Overridepublic long getChildId(int groupPosition, int childPosition) { return childPosition;}// third level@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View layout = convertView; final Object item = (Object) getChild(groupPosition, childPosition); ChildViewHolder holder; if (layout == null) { layout = inflater.inflate(R.layout.item_child, parent, false); holder = new ChildViewHolder(); holder.title = (TextView) layout.findViewById(R.id.itemChildTitle); layout.setTag(holder); } else { holder = (ChildViewHolder) layout.getTag(); } holder.title.setText(item.title.trim()); return layout;}@Overridepublic int getChildrenCount(int groupPosition) { return child.children.get(groupPosition).children.size();}@Overridepublic Object getGroup(int groupPosition) { return child.children.get(groupPosition);}@Overridepublic int getGroupCount() { return child.children.size();}@Overridepublic long getGroupId(int groupPosition) { return groupPosition;}// Second level@Overridepublic View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View layout = convertView; ViewHolder holder; final Object item = (Object) getGroup(groupPosition); if (layout == null) { layout = inflater.inflate(R.layout.item_parent, parent, false); holder = new ViewHolder(); holder.title = (TextView) layout.findViewById(R.id.itemParentTitle); layout.setTag(holder); } else { holder = (ViewHolder) layout.getTag(); } holder.title.setText(item.title.trim()); return layout;}@Overridepublic void registerDataSetObserver(DataSetObserver observer) { super.registerDataSetObserver(observer);}@Overridepublic void unregisterDataSetObserver(DataSetObserver observer) { Log.d("SecondLevelAdapter", "Unregistering observer"); if (observer != null) { super.unregisterDataSetObserver(observer); }}@Overridepublic boolean hasStableIds() { return true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) { return true;}private static class ViewHolder { TextView title;}private static class ChildViewHolder { TextView title;}}5 Constant.javapublic class Constant {static String[] state = {"A","B","C"};static String[][] parent = { {"aa","bb","cc","dd","ee"}, {"ff","gg","hh","ii","jj"}, {"kk","ll","mm","nn","oo"} };static String[][][] child = { { {"aaa","aab","aac","aad","aae"}, {"bba","bbb","bbc","bbd","bbe"}, {"cca","ccb","ccc","ccd","cce","ccf","ccg"}, {"dda","ddb","dddc","ddd","dde","ddf"}, {"eea","eeb","eec"} }, { {"ffa","ffb","ffc","ffd","ffe"}, {"gga","ggb","ggc","ggd","gge"}, {"hha","hhb","hhc","hhd","hhe","hhf","hhg"}, {"iia","iib","iic","iid","iie","ii"}, {"jja","jjb","jjc","jjd"} }, { {"kka","kkb","kkc","kkd","kke"}, {"lla","llb","llc","lld","lle"}, {"mma","mmb","mmc","mmd","mme","mmf","mmg"}, {"nna","nnb","nnc","nnd","nne","nnf"}, {"ooa","oob"} } };}5: item_parent.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:paddingLeft="10dp" ><TextView android:id="@+id/itemParentTitle" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:background="#5ccccc" android:padding="2dp" android:textColor="#006363" android:textSize="20sp" /><ImageView android:id="@+id/itemParentImage" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout> 这篇关于如何显示超过 3 级的可扩展列表视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 09-02 23:13