您的位置:首页 > 其它

可折叠的listview的demo...(listview 嵌套 gridview)ExpandableListView

2017-03-06 18:48 357 查看
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 = M
a3e4
easureSpec.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: