博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ExpandableListView的简单案例
阅读量:4965 次
发布时间:2019-06-12

本文共 5178 字,大约阅读时间需要 17 分钟。

ExpandableListView介绍:

 长话短说,ExpandableListView就是ListView的扩展。像QQ好友分组列表。看下面的效果图,就知道了。

效果图:

 

 

ExpandableListView有几个属性值得一说:

android:childDivider

来分离子列表项的图片或者是颜色。注:图片不会完全显示,分离子列表项的是一条直线

android:childIndicator

在子列表项旁边显示的指示符。注:可以是一个图片

android:childIndicatorLeft

子列表项指示符的左边约束位置。注:即从左端0位置开始计数,比如,假设指示符是一个图标,给定这个属性值为3dip,则表示从左端起3dip开始显示此图标。

android:childIndicatorRight

子列表项指示符的右边约束位置。注:表示右端到什么位置结束

android:groupIndicator

在组列表项旁边显示的指示符。注:可以是一个图片,如果不想要指示器可以设置为@null。

android:indicatorLeft

组列表项指示器的左边约束位置。注:表示左端从什么位置开始(测试了下,在android 4.4的模拟器下没效果)。

android:indicatorRight

组列表项指示器的右边约束位置。注:表示右端到什么位置结束(测试了下,在android 4.4的模拟器下没效果)。

 

 

代码:

package cn.datian.expandablelistviewtest2;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.TextView;import android.widget.Toast;@SuppressLint("NewApi")public class MainActivity extends Activity {    /**     * 子类的数据集合     */    private List
> childrenList; /** * 组集合 */ private List
groupList; private ExpandableListView eListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDate(); eListView = (ExpandableListView) this.findViewById(R.id.eListView); eListView.setAdapter(adapter); //展开第一组,调用了expandGroup(4,false); eListView.expandGroup(0); //下标从0开始,展开第五组,为true表示滚动到第五组的位置。// eListView.expandGroup(4,true); eListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { Toast.makeText(MainActivity.this, "你点击了:"+groupList.get(groupPosition),Toast.LENGTH_SHORT).show(); return false; } }); //点击组下的子条目监听 eListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText(MainActivity.this, "你点击了:"+childrenList.get(groupPosition).get(childPosition), Toast.LENGTH_SHORT).show(); return true; } }); } /** * 初始化数据 */ private void initDate() { childrenList = new ArrayList
>(); groupList = new ArrayList
(); addDate("小学","张三"); addDate("中学","李四"); addDate("高中","王五"); addDate("大学","赵六"); addDate("硕士","小红"); addDate("博士","小明"); addDate("博士后","大明"); } private void addDate(String group, String chlidren) { groupList.add(group); List
cs = new ArrayList
(); for(int i = 0;i < 10;i++){ cs.add(chlidren+i); } childrenList.add(cs); } BaseExpandableListAdapter adapter = new BaseExpandableListAdapter() { /** * 返回true,表明子条目是可选的。 */ @Override public boolean isChildSelectable(int groupPosition, int childPosition) { Log.i("adpter", "isChildSelectable"); return true; } @Override public boolean hasStableIds() { Log.i("adpter", "hasStableIds"); return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { Log.i("adpter", "getGroupView"); View v = View.inflate(MainActivity.this, R.layout.group_item,null); TextView tv= (TextView) v.findViewById(R.id.tv); tv.setText(groupList.get(groupPosition)); tv.setPadding(20, 0, 0, 0); return v; } @Override public long getGroupId(int groupPosition) { Log.i("adpter", "getGroupId"); return groupPosition; } @Override public int getGroupCount() { Log.i("adpter", "getGroupCount"); return groupList.size(); } @Override public Object getGroup(int groupPosition) { Log.i("adpter", "getGroup"); return groupList.get(groupPosition); } @Override public int getChildrenCount(int groupPosition) { Log.i("adpter", "getChildrenCount"); return childrenList.get(groupPosition).size(); } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { Log.i("adpter", "getChildView"); TextView tv = new TextView(MainActivity.this); tv.setText(childrenList.get(groupPosition).get(childPosition)); tv.setPadding(20, 0, 0, 0); return tv; } @Override public long getChildId(int groupPosition, int childPosition) { Log.i("adpter", "getChildId"); return childrenList.get(groupPosition).size(); } @Override public Object getChild(int groupPosition, int childPosition) { Log.i("adpter", "getChild"); return childrenList.get(groupPosition).get(childPosition); } };}

 

 

 

 layout布局:

 layout组条目布局:

 

 

android:groupIndicator="@drawable/expandable_indicator_selector" : 使用选择器 选择器代码:

 

 

转载于:https://www.cnblogs.com/datian/p/3797080.html

你可能感兴趣的文章
HDU 3466 Proud Merchants
查看>>
java list 容器的ConcurrentModificationException
查看>>
前端 HTML 注释
查看>>
前端 HTML标签属性
查看>>
glassfish的启动
查看>>
513. 找树左下角的值
查看>>
asp mvc 中重写JsonResult,解决Json返回值序列化问题
查看>>
微信开发-微信内置浏览器的Javascript API
查看>>
React学习之坑(二)- 基础入门
查看>>
JavaScript - flex布局测试案例【flex】主轴方向
查看>>
JAVA之nio
查看>>
洛谷P2858奶牛零食 题解
查看>>
ASP.NET Web API中把分页信息放Header中返回给前端
查看>>
codeforces571C. CNF 2
查看>>
Windows环境下的NodeJS+NPM+Bower安装配置
查看>>
[004]多维数组和指针
查看>>
MySQL 基础语句的练习
查看>>
unity2D物理引擎之-Rigidbody 2D
查看>>
Editing 2011-2012 ACM-ICPC Northeastern European Regional Contest (NEERC 11)
查看>>
VMware虚拟机安装CentOS 6.9图文教程
查看>>