Как отобразить более трех уровней расширяемого вида списка?

Как отображать более 3-х уровней расширяемого вида списка, я получаю только примеры для расширения 3-уровня.

Ссылаясь на это: трехуровневый расширяемый список

В этом примере он добавляет еще один расширяемый список в методе getChildView для ParentLevel BaseExpandableListAdapter :

 CustExpListview SecondLevelexplv = new CustExpListview(Home.this); SecondLevelexplv.setAdapter(new SecondLevelAdapter()); SecondLevelexplv.setGroupIndicator(null); return SecondLevelexplv; 

так что я добавлю еще один расширяемый список в методе getChildView SecondLevelAdapter .

Его рабочий просмотр не подходит, как 3-уровневое расширяемое представление списка. И я прочел:

3 уровня расшир-лист-представление-с-салфетки-функция

многоуровневый expandablelistview-в-андроид

эмиссионный с расширяющимся-многоуровневым expandablelistview

Пожалуйста, руководство или поделиться мне подходящим примером для многоуровневого расширяемого дисплея в Android.

Благодаря,

Я нашел решение, и я загружаю весь class java. Итак, проверьте все java или U, чтобы проверить это :

1: MainActivity.java

 public class MainActivity extends Activity { @Override 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;k 

2: Object.java

 public class Object { public String title; // use getters and setters instead public List children; // same as above public Object() { children = new ArrayList(); } } 

3: RootAdapter.java

 public 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); } } @Override public Object getChild(int groupPosition, int childPosition) { return root.children.get(groupPosition); } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { // second level list return lsfirst[groupPosition].cls; } @Override public int getChildrenCount(int groupPosition) { return 1; } @Override public Object getGroup(int groupPosition) { return root.children.get(groupPosition); } @Override public int getGroupCount() { return root.children.size(); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public 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; } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } } 

4: SecondLevelAdapter.java

 public 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); } @Override public Object getChild(int groupPosition, int childPosition) { return child.children.get(groupPosition).children.get(childPosition); } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } // third level @Override public 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; } @Override public int getChildrenCount(int groupPosition) { return child.children.get(groupPosition).children.size(); } @Override public Object getGroup(int groupPosition) { return child.children.get(groupPosition); } @Override public int getGroupCount() { return child.children.size(); } @Override public long getGroupId(int groupPosition) { return groupPosition; } // Second level @Override public 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; } @Override public void registerDataSetObserver(DataSetObserver observer) { super.registerDataSetObserver(observer); } @Override public void unregisterDataSetObserver(DataSetObserver observer) { Log.d("SecondLevelAdapter", "Unregistering observer"); if (observer != null) { super.unregisterDataSetObserver(observer); } } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } private static class ViewHolder { TextView title; } private static class ChildViewHolder { TextView title; } } 

5 Constant.java

 public 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"} } }; } - public 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

      

Использование Expendable List View и создание второго расходного адаптера – это способ, который не рекомендуется, чтобы все процессы были сложными, есть простой способ, раздувая различный вид, используя виды прокрутки и внутри линейного макета …..

 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // 999999 is a size in pixels. // ExpandableListView requires a maximum height in order to do measurement calculations. heightMeasureSpec = MeasureSpec.makeMeasureSpec(999999, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } 

это делает гораздо более разумную длину.

 public class CustExpListview extends ExpandableListView { public CustExpListview(Context context) { super(context); } protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { widthMeasureSpec = MeasureSpec.makeMeasureSpec(960, MeasureSpec.AT_MOST); heightMeasureSpec = MeasureSpec.makeMeasureSpec(600, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDetachedFromWindow() { try { super.onDetachedFromWindow(); } catch (IllegalArgumentException e) { // TODO: Workaround for // http://code.google.com/p/android/issues/detail?id=22751 } } } 
  • В WPF, как я могу определить, является ли элемент управления видимым для пользователя?
  • Добавьте n прямоугольников в canvas с MVVM в WPF
  • Сделать приложение-волшебник на Android-устройстве
  • Эффект JavaFX на фоне
  • Добавление JPanels от других classов к cardLayout
  • Разница между validate (), revalidate () и invalidate () в графическом интерфейсе Swing
  • Безопасно ли создавать виджеты Swing / AWT NOT на тему Dispatch Event?
  • Создание пользовательской кнопки в Java с помощью JButton
  • Установка свойства Style метки WPF в коде?
  • Как я могу улучшить внешний вид приложения для Android?
  • Лучшая практика настройки местоположений JFrame
  • Давайте будем гением компьютера.