可折叠的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值