android 仿qq分组
16lz
2021-01-25
Android 组件中本身带有 ExpandableListView ,类似qq分组。查看源码可看到
ExpandableListView 继承自listView。所以最重要的适配器也和普通的listView差不多。适配器继承自BaseExpandableListAdapter。
和普通的listView用法一样,继承BaseExpandableListAdapter,重写里面方法。
public ExpandListAdapter1(List list, Context context) { this.list = list; this.context = context; } @Override public void registerDataSetObserver(DataSetObserver dataSetObserver) { } @Override public void unregisterDataSetObserver(DataSetObserver dataSetObserver) { } //分组list大小 @Override public int getGroupCount() { return list.size(); } //分组对应下面的子组list大小 @Override public int getChildrenCount(int i) { return list.get(i).users.size(); } //组对应的item @Override public Object getGroup(int i) { return list.get(i); } //分组对应下面的子租的item @Override public Object getChild(int i, int i1) { return list.get(i).users.get(i1); } //分组对应的item的id @Override public long getGroupId(int i) { return i; } //子组对应的item的id @Override public long getChildId(int i, int i1) { return i1; } @Override public boolean hasStableIds() { return true; } //组对应的listview的getview及点击组关闭组或者打开,isExpanded对应组是否打开 @Override public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupHolder holder = null; if (convertView == null) { holder = new GroupHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.item_group_title, null); holder.title = (TextView) convertView.findViewById(R.id.item_GroupTitle); holder.isExpand = (ImageView) convertView.findViewById(R.id.itemIsExpand); convertView.setTag(holder); } else { holder = (GroupHolder) convertView.getTag(); } if (isExpanded) { holder.isExpand.setImageResource(R.mipmap.openthesymbol2x); } else { holder.isExpand.setImageResource(R.mipmap.closethesymbol2x); } holder.title.setText(list.get(groupPosition).name); return convertView; } //子组对应listview的getView @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildHolder holder; if (convertView == null) { holder = new ChildHolder(); convertView = LayoutInflater.from(context).inflate( R.layout.item_child, null); holder.name = (TextView) convertView.findViewById(R.id.childItemTitle); holder.img = (ImageView) convertView.findViewById(R.id.childItemImg); convertView.setTag(holder); } else { holder = (ChildHolder) convertView.getTag(); } FindAccountByOrgResponse.ChildrenBean.UsersBean cb = list.get(groupPosition).users.get(childPosition); holder.name.setText(cb.name); holder.job.setText(""); Glide.with(context).load(cb.avatar).into(holder.img); return convertView; } @Override public boolean isChildSelectable(int i, int i1) { return true; } @Override public boolean areAllItemsEnabled() { return false; } @Override public boolean isEmpty() { return false; } @Override public void onGroupExpanded(int i) { } @Override public void onGroupCollapsed(int i) { } @Override public long getCombinedChildId(long l, long l1) { return 0; } @Override public long getCombinedGroupId(long l) { return 0; } class GroupHolder { TextView title,more; ImageView isExpand; } class ChildHolder { TextView name,job; ImageView img; }}
在添加适配器的时候比listView多一条,
expandableListView1.setGroupIndicator(null);
是否选择默认的组的打开或关闭的指示器,就是组前面的箭头,可以自定义
更多相关文章
- Android(安卓)系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
- android 使用zxing生成中间嵌套logo的二维码
- Android判断两个时间的大小
- android 常用 INTENT
- 学习音频之android中AudioRecord采集音频的参数说明
- Android大图裁剪解决办法
- Android轮播图 banner,图片视频混播banner
- Android(安卓)UI设计--新闻或信息条数的实现
- Android(安卓)SDCard的容量大小