1. 程式人生 > >對於使用ExadableListView的使用

對於使用ExadableListView的使用

在使用exadablelistview中主要的事對於adapter中幾個方法的認識

  1. privateclass MyExpandableListViewAdapter extends BaseExpandableListAdapter {  
  2.     //  獲得某個父項的某個子項
  3.     @Override
  4.     public Object getChild(int parentPos, int childPos) {  
  5.         return dataset.get(parentList[parentPos]).get(childPos);  
  6.     }  
  7.     //  獲得父項的數量
  8.     @Override
  9.     publicint getGroupCount() {  
  10.         return dataset.size();  
  11.     }  
  12.     //  獲得某個父項的子項數目
  13.     @Override
  14.     publicint getChildrenCount(int parentPos) {  
  15.         return dataset.get(parentList[parentPos]).size();  
  16.     }  
  17.     //  獲得某個父項
  18.     @Override
  19.     public Object getGroup(int parentPos) {  
  20.         return
     dataset.get(parentList[parentPos]);  
  21.     }  
  22.     //  獲得某個父項的id
  23.     @Override
  24.     publiclong getGroupId(int parentPos) {  
  25.         return parentPos;  
  26.     }  
  27.     //  獲得某個父項的某個子項的id
  28.     @Override
  29.     publiclong getChildId(int parentPos, int childPos) {  
  30.         return childPos;  
  31.     }  
  32.     //  按函式的名字來理解應該是是否具有穩定的id,這個方法目前一直都是返回false,沒有去改動過
  33.     @Override
  34.     publicboolean hasStableIds() {  
  35.         returnfalse;  
  36.     }  
  37.     //  獲得父項顯示的view
  38.     @Override
  39.     public View getGroupView(int parentPos, boolean b, View view, ViewGroup viewGroup) {  
  40.         return view;  
  41.     }  
  42.     //  獲得子項顯示的view
  43.     @Override
  44.     public View getChildView(int parentPos, int childPos, boolean b, View view, ViewGroup viewGroup) {  
  45.         return view;  
  46.     }  
  47.     //  子項是否可選中,如果需要設定子項的點選事件,需要返回true
  48.     @Override
  49.     publicboolean isChildSelectable(int i, int i1) {  
  50.         returnfalse;  
  51.     }  
  52.  }  
第一點就是對adapter中的實現方法進行理解認識
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    if(convertView==null){
        //建立layoutinflaterserver
LayoutInflater layoutInflater= (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(R.layout.parent_item,null);
}
    convertView.setTag(R.layout.parent_item, groupPosition);
convertView.setTag(R.layout.child_item, -1);
TextView text = (TextView) convertView.findViewById(R.id.expanable_text);
text.setText(parentList[groupPosition]);
    return convertView;
}

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) MainActivity
                .this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_item, null);
}
    convertView.setTag(R.layout.parent_item, groupPosition);
convertView.setTag(R.layout.child_item, childPosition);
TextView text = (TextView) convertView.findViewById(R.id.child_title);
text.setText(dataset.get(parentList[groupPosition]).get(childPosition));
    return convertView;
}

重點是這兩個方法類似於recycle讓view中的getview的方法

在判斷conview為空後首先做的就是建立Layoutinflatar的一個類的服務聽