1. 程式人生 > >可摺疊的listview的demo...(listview 巢狀 gridview)ExpandableListView

可摺疊的listview的demo...(listview 巢狀 gridview)ExpandableListView

ExpandableListView  是安卓自帶的也需要介面卡
adapter=new MyExpandableListViewAdapter(getActivity(),list);
listView.setAdapter(adapter);
用法和listview一毛一樣
public class MyExpandableListViewAdapter extends BaseExpandableListAdapter {
    private TextView textView1,textView2;//程式碼全乾上了 我也是小白   在此記錄  以備後用 
    private Context context
; private ArrayList<LYMedicalRecord> list; public MyExpandableListViewAdapter(Context context, ArrayList<LYMedicalRecord> list) { this.context = context; this.list = list; } @Override public int getGroupCount() { return list.size(); } @Override public int
getChildrenCount(int groupPosition) {//個人展示需求 故沒有返回子集合個數
//        return list.get(groupPosition).getSubMedicalRecord().size();
return 1;
}

    @Override
public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
}

    @Override
public Object getChild(int groupPosition, int childPosition) {
        return 
list.get(groupPosition).getSubMedicalRecord().get(childPosition); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return true; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupHolder groupHolder = null; if (convertView == null) { convertView = View.inflate(context, R.layout.dianzibingli_group, null); groupHolder = new GroupHolder(); groupHolder.txt = (TextView) convertView.findViewById(R.id.dianzibingli_grouptv); convertView.setTag(groupHolder); } else { groupHolder = (GroupHolder) convertView.getTag(); } groupHolder.txt.setText(list.get(groupPosition).getGroupKey()+"("+list.get(groupPosition).getSubMedicalRecord().size()+")"); return convertView; } @Override public View getChildView(final int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ItemHolder itemHolder = null; if (convertView == null) { convertView = View.inflate(context, R.layout.dianzibingli_child, null); itemHolder = new ItemHolder(); itemHolder.gv = (MyGridView) convertView.findViewById(R.id.dianzibingli_gv); convertView.setTag(itemHolder); } else { itemHolder = (ItemHolder) convertView.getTag(); } MyBaseAdapter<LYMedicalRecord.SubMedicalRecordBean> myBaseAdapter=new MyBaseAdapter<LYMedicalRecord.SubMedicalRecordBean>(context,list.get(groupPosition).getSubMedicalRecord()) { @Override public int getContentView() { return R.layout.dianzibingli_child_item; } @Override public void onInitView(View view, int position) { textView1 = (TextView) view.findViewById(R.id.dianzibingligv_item_tv); textView2=(TextView) view.findViewById(R.id.dianzibingligv_item_tv2); textView1.setText(list.get(groupPosition).getSubMedicalRecord().get(position).getTitle()); textView2.setText(list.get(groupPosition).getSubMedicalRecord().get(position).getCreateDateTime().substring(2,16)); } }; itemHolder.gv.setAdapter(myBaseAdapter); itemHolder.gv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent=new Intent(context, DianzibingliActivity.class); intent.putExtra("groupPosition",groupPosition); intent.putExtra("postion",position); intent.putExtra("dianzibingli",list); context.startActivity(intent); } }); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class GroupHolder { public TextView txt; } class ItemHolder { public MyGridView gv; } }

最後後附上巢狀可以完全現實的gridview 雖熱網上多的事  我也cv
public class MyGridView extends GridView {//重寫了寬高
public MyGridView(Context context) {
        super(context);
}

    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
}

    public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
}

    @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
}
}
.......................................................................................
最最後ExpandableListView所有項預設展開
就是是迴圈一下父集合
    if (adapter!=null)
    {
        if (adapter.getGroupCount()!=0)
        {
            for (int i = 0; i < adapter.getGroupCount(); i++) {
                listView.expandGroup(i);
}
        }
    }
    ((HuanZheActivity)getActivity()).changetime();
}
!!!!!!!//todo