摘要:效果图如下二级列表附有点击事件。取消安卓二级列表二级菜单一级列表布局是用来自定义打开闭合图标的不自定义也可以,箭头会默认在最左边,建议自己用一个控件来控制上下箭头。
效果图如下:
二级列表附有点击事件。
1、布局文件:
此处加了一个自定义的导航RelativeLayout,记得注activity的时候添加 android:theme="@style/Theme.AppCompat.Light.NoActionBar" 去掉自带的导航。
1 26 7 12 31 32 3322 30 37 38 39
2、一级列表布局:
ImageView是用来自定义打开闭合图标的(不自定义也可以,箭头会默认在最左边),建议自己用一个ImageView控件来控制上下箭头。图标可以去阿里巴巴矢量图上下载。
3、二级列表布局:
4、activity代码:
1 private ExpandableListView expandableListView; 2 3 //一级列表数据源 4 private String[] groups = {"软件设计", "数据库技术", "操作系统"}; 5 //二级列表数据源 6 private String[][] childs={{"架构设计","面向对象","设计模式","领域驱动设计"},{"SQL Server","Oracle","MySql", "Dameng "},{"Linux","Windows","嵌入式"}}; 7 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_expandable_listview); 13 14 initView(); 15 } 16 private void initView() { 17 expandableListView = (ExpandableListView)findViewById(R.id.expandableListView); 18 //#TODO 去掉自带箭头,在一级列表中动态添加 19 expandableListView.setGroupIndicator(null); 20 expandableListView.setAdapter(new MyExpandableListView()); 21 22 } 23 public void goBack(View view) { 24 finish(); 25 }
5、ExpandableListView适配器:
继承自BaseExpandableListAdapter,重写ExpandableListAdapter中的10个方法
1 class MyExpandableListView extends BaseExpandableListAdapter { 2 3 /*一级列表个数*/ 4 @Override 5 public int getGroupCount() { 6 return groups.length; 7 } 8 9 /*每个二级列表的个数*/ 10 @Override 11 public int getChildrenCount(int groupPosition) { 12 return childs[groupPosition].length; 13 } 14 15 /*一级列表中单个item*/ 16 @Override 17 public Object getGroup(int groupPosition) { 18 return groups[groupPosition]; 19 } 20 21 /*二级列表中单个item*/ 22 @Override 23 public Object getChild(int groupPosition, int childPosition) { 24 return childs[groupPosition][childPosition]; 25 } 26 27 @Override 28 public long getGroupId(int groupPosition) { 29 return groupPosition; 30 } 31 32 @Override 33 public long getChildId(int groupPosition, int childPosition) { 34 return childPosition; 35 } 36 37 /*每个item的id是否固定,一般为true*/ 38 @Override 39 public boolean hasStableIds() { 40 return true; 41 } 42 43 /*#TODO 填充一级列表 44 * isExpanded 是否已经展开 45 * */ 46 @Override 47 public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 48 if (convertView == null) { 49 convertView = getLayoutInflater().inflate(R.layout.list_item_expandablelistview,null); 50 } 51 TextView tv_group = (TextView) convertView.findViewById(R.id.tv_group); 52 ImageView iv_group = (ImageView) convertView.findViewById(R.id.iv_group); 53 tv_group.setText(groups[groupPosition]); 54 //控制是否展开图标 55 if (isExpanded) { 56 iv_group.setImageResource(R.drawable.expand_iv_up); 57 } else { 58 iv_group.setImageResource(R.drawable.expand_iv_down); 59 } 60 return convertView; 61 } 62 63 /*#TODO 填充二级列表*/ 64 @Override 65 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 66 if (convertView == null) { 67 convertView = getLayoutInflater().inflate(R.layout.list_item_expandablelistview_child,null); 68 } 69 ImageView image = (ImageView) convertView.findViewById(R.id.iv_child); 70 TextView tv = (TextView) convertView.findViewById(R.id.tv_child); 71 tv.setText(childs[groupPosition][childPosition]); 72 return convertView; 73 } 74 75 /*二级列表中每个能否被选中,如果有点击事件一定要设为true*/ 76 @Override 77 public boolean isChildSelectable(int groupPosition, int childPosition) { 78 return true; 79 } 80 81 82 }
到这里基本就完成了,最后再配置一下每个二级列表的点击事件即可:
1 expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 2 @Override 3 public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 4 TextView childAt = (TextView)((LinearLayout) v).getChildAt(1);//获得点击列表中TextView的值,需要强转一下,否则找不到getChildAt方法 5 Toast.makeText(ExpandableListViewActivity.this, "点击了 "+childAt.getText()+" 列表", Toast.LENGTH_SHORT).show(); 6 return true;
7 } 8 });
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/3133.html
摘要:关于的介绍中文官方其实基本也不用怎么讲,直接看也很清晰是默认支持二级展开树形结构,有的朋友喜欢用嵌套的方式实现多级的展开树,我并不建议那样用,写这篇文章就是单纯的总结一下这个空间,以及满足工作中只是简单的二级展开的需求。 1、关于ExpandableListView的介绍 中文官方api--其实基本也不用怎么讲,直接看api也很清晰http://www.zhdoc.net/androi...
摘要:那些酷炫的开源库整理整理开源库,文章提交,欢迎提交更新二维可拖动面板控件控件可用于房态盘计划表待办事项课程表等相关需要二维视图的场合,需要的可以收藏下五分钟带你看懂嵌套滑动机制在发布之后加入了嵌套滑动机制为嵌套滑动提供了更方便的处理方案。 仿淘宝、京东拖拽商品详情(可嵌套ViewPager、ListView、WebView、FragmentTabhost) 对于电商App,商品详情无疑...
摘要:第二部分对软键盘的显示和隐藏状态进行监听。这时会出现诸如输入框依旧被键盘遮挡了遮挡的输入框没有焦点而不能输入内容展开和收起分组时自动滚动到焦点所在位置等问题。注意有输入框时,布局尽可能不去复用。 为了更好的用户体验,煎熬了许久,得到这么个解决方案。在此记录下来,以供后来者参考。 第一部分 清单文件中组件activity的android:windowSoftInputMode属性...
摘要:图片预览工具掘金仿微信的图片预览工具这是一个仿朋友圈的列表。加载图片工具使处理发送大图掘金什么是就是内存溢出,即。图片加载框架最详细的使用指南掘金写在前面中有几个比较有名的图片加载框架,和。 Android 图片预览工具 - Android - 掘金仿微信的图片预览工具 01.png 这是一个仿朋友圈的列表。 加载图片工具使... 处理 Android 发送大图 OOM - Andro...
阅读 1647·2021-09-27 13:35
阅读 1810·2021-09-09 09:33
阅读 3321·2019-08-30 14:16
阅读 2340·2019-08-30 10:52
阅读 744·2019-08-29 16:35
阅读 1287·2019-08-29 15:22
阅读 3530·2019-08-23 18:21
阅读 2967·2019-08-23 18:00