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