2

我想创建一个具有可变级数的ExpandableListView,像这样。ExpandableListView与可变数量的级别

http://i.imgur.com/ukkCq7B.png

我已经按照这个例子只用一个平儿的创建ExpandableListView:

https://gist.github.com/bowmanb/4052030

代码:

public class SavedTabsFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.saved_tabs, null); 
     ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.list); 
     elv.setAdapter(new SavedTabsListAdapter()); 
     return v; 
    } 

    public class SavedTabsListAdapter extends BaseExpandableListAdapter { 

     private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" }; 

     private String[][] children = { 
      { "Arnold", "Barry", "Chuck", "David" }, 
      { "Ace", "Bandit", "Cha-Cha", "Deuce" }, 
      { "Fluffy", "Snuggles" }, 
      { "Goldy", "Bubbles" } 
     }; 

     @Override 
     public int getGroupCount() { 
      return groups.length; 
     } 

     @Override 
     public int getChildrenCount(int i) { 
      return children[i].length; 
     } 

     @Override 
     public Object getGroup(int i) { 
      return groups[i]; 
     } 

     @Override 
     public Object getChild(int i, int i1) { 
      return children[i][i1]; 
     } 

     @Override 
     public long getGroupId(int i) { 
      return i; 
     } 

     @Override 
     public long getChildId(int i, int i1) { 
      return i1; 
     } 

     @Override 
     public boolean hasStableIds() { 
      return true; 
     } 

     @Override 
     public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) { 
      TextView textView = new TextView(SavedTabsFragment.this.getActivity()); 
      textView.setText(getGroup(i).toString()); 
      return textView; 
     } 

     @Override 
     public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) { 
      TextView textView = new TextView(SavedTabsFragment.this.getActivity()); 
      textView.setText(getChild(i, i1).toString()); 
      return textView; 
     } 

     @Override 
     public boolean isChildSelectable(int i, int i1) { 
      return true; 
     } 

    } 

} 

我如何创建一个ExpandableListView有不同数量的水平?是一个ExpandableListView甚至是最好的选择?

+0

任何人有任何答案? – user5627376

回答

0

This post解释了关于3级可扩展列表。希望这有助于。

基本思路是,第一级列表由ExpandableListAdapter支持。由该适配器生成的子视图本身是ExpandableListAdapters,它们本身提供了第二级组和最终的子元素。

+0

我正在寻找可变数量的层次,这意味着它可以是1层或20层。另外,我觉得这个帖子可能会有点过时,因为它已经快4岁了。 – user5627376

+0

嗯,我认为只要'ExpandableListView'实现你想要的就不是一个有效的解决方案。它会让事情变得混乱。 –

+0

是的,这就是我寻找指导的原因。 – user5627376