安卓二级列表的适配器 带优化的 解决二级列表里添加了自定义view以后不能点击展开的问题
来源:互联网 发布:mac os 配置 postman 编辑:程序博客网 时间:2024/06/14 06:35
在自定义的item项layout中加入dandroid:descendantFocusability="blocksDescendants"开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。这时候就可以使用descendantFocusability来解决啦,API描述如下:android:descendantFocusabilityDefines the relationship between the ViewGroup and its descendants when looking for a View to take focus.Must be one of the following constant values.该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。属性的值有三种:beforeDescendants:viewgroup会优先其子类控件而获取到焦点afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了下面是适配器:适用于安卓二级列表import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.CheckBox;import android.widget.TextView;import com.bwei.erjigou.Bean.Goodsbean;import com.bwei.erjigou.Bean.Groupbean;import com.bwei.erjigou.R;import java.util.List;/** * Created by 31962 on 2017/10/24. */public class MyElvAdapter extends BaseExpandableListAdapter { private List<Groupbean> grouplist; private List<List<Goodsbean>> childlist; private Context context; public MyElvAdapter(List<Groupbean> grouplist, List<List<Goodsbean>> childlist, Context context) { this.grouplist = grouplist; this.childlist = childlist; this.context = context; } @Override public int getGroupCount() { return grouplist.size(); } @Override public int getChildrenCount(int groupPosition) { return childlist.get(groupPosition).size(); } @Override public Object getGroup(int groupPosition) { return grouplist.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return childlist.get(groupPosition).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 false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewholder groupViewholder ; if(convertView == null){ groupViewholder = new GroupViewholder(); convertView = View.inflate(context, R.layout.groupitem, null); groupViewholder.cb_group = convertView.findViewById(R.id.cb_group); groupViewholder.tv_group = convertView.findViewById(R.id.tv_group); convertView.setTag(groupViewholder); }else{ groupViewholder = (GroupViewholder) convertView.getTag(); } groupViewholder.cb_group.setChecked(grouplist.get(groupPosition).ischecked); groupViewholder.tv_group.setText(grouplist.get(groupPosition).groupname); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildViewholder childviewholder ; if(convertView == null){ childviewholder = new ChildViewholder(); convertView = View.inflate(context,R.layout.childitem,null); childviewholder.cb_child = convertView.findViewById(R.id.cb_child); childviewholder.tv_child = convertView.findViewById(R.id.tv_child); convertView.setTag(childviewholder); }else { childviewholder = (ChildViewholder) convertView.getTag(); } childviewholder.cb_child.setChecked(childlist.get(groupPosition).get(childPosition).ischecked); childviewholder.tv_child.setText(childlist.get(groupPosition).get(childPosition).goodsname); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class GroupViewholder{ CheckBox cb_group; TextView tv_group; } class ChildViewholder{ CheckBox cb_child; TextView tv_child; }}
阅读全文
0 0
- 安卓二级列表的适配器 带优化的 解决二级列表里添加了自定义view以后不能点击展开的问题
- 二级列表的购物车-适配器
- 实现ExpandableListView 二级列表,点击二级条目状态的改变
- tableViewCell列表点击展开显示二级列表
- jquery带动画的二级下拉列表
- 单纯的二级列表
- 二级列表的使用
- 二级列表的实现
- 二级列表的实现
- 自定义Adapter实现RecyclerView的可展开二级列表expand效果
- 安卓ExpandableListAdapter的二级列表监听问题--自动收缩问题
- ExpandableListView 二级展开列表
- 展开二级列表
- 二级下拉列表的实现
- 二级下拉列表的实现
- 支持IE6的二级列表
- 最简单的二级列表
- 二级列表的简单例子
- XJOI一句话复习题解
- 3D旋转
- 集合框架常用子类构架体系
- 2017-难忘的秋招经历
- HTTP Status 503
- 安卓二级列表的适配器 带优化的 解决二级列表里添加了自定义view以后不能点击展开的问题
- SpringMVC文件上传
- 10月24 日 c语言 选择法 冒泡法 交换法 插入法折半法 汇总
- 从Wikidata上面获取数据及关系的几种方法
- 简单的angular实现一个购物车小功能
- 浅谈HTTP中Get、Post、Put与Delete的区别
- hdu 1561
- js把html中的table数据导出到Excel中
- PAT刷题:1019. General Palindromic Number (20)