ExpandableListView

山有木xi發表於2020-05-20

ExpandableListView是ListView的子類,在普通的ListView上面進行擴張,把應用中的列表項分為幾組,每組裡又可以包含多個列表項

實現ExpandableListView的幾種方法

  • 擴充套件BaseExpandableListAdapter實現 ExpandableListView

  • 使用Simple ExpandableListView將兩個List包裝成 ExpandableListView

  • 使用SimpleCursorTreeAdapter將Cursor資料包裝成 SimpleCursorTreeAdapter

常用的xml屬性

  • android:childDivider

  • android:childIndicator

  • android:groupIndicator

舉個例子: 擴充套件BaseExpandableListAdapter實現 ExpandableListView

那麼關鍵就是,實現四個方法

  • getGroupCount:返回包含的組列表項的數量

int[] logos = new int[]
   {
    R.drawable.p,
    R.drawable.z,
    R.drawable.t
   };
   private String[] at = new String[]
    { "第一種", "第二種", "第三種"};
   private String[][] arms = new String[][]
    {
     { "11", "12", "13", "14" },
     { "21", "22", "23", "24" },
     { "31", "32" , "33" }
    };
@Override
   public int getGroupCount()
   {
    return at.length;
   }
  • getGroupView:返回的View物件將作為元件列表項

@Override
   public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent)
   {
    LinearLayout ll = new LinearLayout(MainActivity.this);
    ll.setOrientation(0);
    ImageView logo = new ImageView(MainActivity.this);
    logo.setImageResource(logos[groupPosition]);
    ll.addView(logo);
    TextView textView = getTextView();
    textView.setText(getGroup(groupPosition).toString());
    ll.addView(textView);
    return ll;
   }
  • getChildrenCount:返回特定組子列表項的數量

@Override
   public int getChildrenCount(int groupPosition)
   {
    return arms[groupPosition].length;
   }
  • getChildView:返回的View物件將作為特定組,特定位置的子列表項

@Override
   public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent)
   {
    TextView textView = getTextView();
    textView.setText(getChild(groupPosition, childPosition)
      .toString());
    return textView;
   }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2693270/,如需轉載,請註明出處,否則將追究法律責任。