ExpandableListView 可折叠的下拉listview
ExpandableListView用法如下
1.定义布局文件main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ExpandableListView
android:childIndicator="@drawable/icon"
android:id="@+id/el"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ExpandableListView> </LinearLayout>
2.java代码如下
public class MainActivity extends Activity {
final int[] images = { R.drawable.p, R.drawable.t, R.drawable.z };
final String[] names = { "人族", "虫族", "神族" };
final String[][] names_ = { { "特种兵", "警察", "城管" }, { "蚂蚁", "蚯蚓", "蜘蛛" },
{ "大神", "玉皇大帝", "如来佛祖" } };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
ExpandableListView el = (ExpandableListView) findViewById(R.id.el);
//此处使用ExpandableListAdapter的子类BaseExpandableListAdapter,否则使用父类会有很多方法需要重写
el.setAdapter(new BaseExpandableListAdapter() {
@Override
public boolean isChildSelectable(int groupPosition,
int childPosition) {
return true;
}
@Override
public boolean hasStableIds() {
return true;
}
//自定义一个方法,用于操作 父级/子级菜单中的文本
private TextView getTextView() {
AbsListView.LayoutParams param = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, );//定义列表每行的宽度以及高度
TextView tv = new TextView(MainActivity.this);
tv.setLayoutParams(param);
tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);//定义文本位置
tv.setPadding(, , , );//居左60dp
tv.setTextSize();
return tv;
}
//获取父级视图--把图片和文本挂载到 线性布局上
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(MainActivity.this);
ll.setOrientation();
ImageView iv = new ImageView(MainActivity.this);
iv.setImageResource(images[groupPosition]);
ll.addView(iv);
TextView tv = getTextView();
tv.setText(getGroup(groupPosition).toString());
ll.addView(tv);
return ll;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
//获取父级菜单数量
@Override
public int getGroupCount() {
return names.length;
}
//获取每个父级对象
@Override
public Object getGroup(int groupPosition) {
return names[groupPosition];
}
//获取下拉子菜单的数量
@Override
public int getChildrenCount(int groupPosition) {
return names_[groupPosition].length;
}
//显示下拉菜单项
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView tv = getTextView();
tv.setText(getChild(groupPosition, childPosition).toString());
return tv;
}
//获取下拉子菜单的id
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
//获取下拉子菜单中的 每个对象
@Override
public Object getChild(int groupPosition, int childPosition) {
return names_[groupPosition][childPosition];
}
});
}
ExpandableListView 可折叠的下拉listview的更多相关文章
- Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工 ...
- android UI进阶之实现listview的下拉加载
关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现. 最初的下拉加载应该是ios上的效果,现在很多应用如新浪微 ...
- 魅族手机Listview下拉出现hold字样的奇葩问题解决方案
前几天测试在魅族手机上测试,下拉listview,出现奇葩的hold字样,╭∩╮(︶︿︶)╭∩╮,这锅老子不背,但是问题还得解决吧,如下是对于魅族不同版本的出现这种情况的处理: 2.3之前: andr ...
- ListView实现下拉刷新(一)建立头布局
一.效果演示 ListView实现下拉刷新,是很常见的功能.下面是一个模拟的效果,如下图: 效果说明:当往下拉ListView的时候 ...
- 【Android】下拉刷新实现
关于这方面的文章百度下有很多,我就只写写我自己实现过程. 我觉得学习一门语言不是做了几个项目就可以认为自己会了,这只是暂时的,若没有笔记,时间长了,你是怎么解决某些问题,估计连你自己都忘了,又得费时费 ...
- ListView上拉加载,下拉刷新 PullToRefresh的使用
PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollV ...
- Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)
PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie ...
- android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)
Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...
- listview下拉刷新和上拉加载更多的多种实现方案
listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局 android系统为listview提供了addfootview ...
随机推荐
- 使用top查看进程和系统负载信息
引言 使用top命令,可以查看正在运行的进程和系统负载信息,包括cpu负载.内存使用.各个进程所占系统资源等,top可以以一定频率更新这些统计信息.下面我们来学习top命令的具体使用方法. ...
- Python基础总结之初步认识---class类的继承(终)。第十六天开始(新手可相互督促)
最近生病了,python更新要结束了,但是这才是真正的开始.因为后面要更新的是UnitTest单元测试框架,以及后续的Requests库.在后续的笔记会补充一些python的其他细节笔记.我想是这样的 ...
- 28岁,转行学 IT 靠谱吗?
前几天在知乎上,刷到这么一个问题 鉴于有不少人看了我的blog给我私信一些职业规划相关的问题,讨论很多的就是担心自己年龄是否还适合转行. 于是决定静心下来码了一篇回答, 同时搬到博客园来供大家消遣.. ...
- ZooKeeper系列(二)—— Zookeeper 单机环境和集群环境搭建
一.单机环境搭建 1.1 下载 下载对应版本 Zookeeper,这里我下载的版本 3.4.14.官方下载地址:https://archive.apache.org/dist/zookeeper/ # ...
- ServerResponse(服务器统一响应数据格式)
ServerResponse(服务器统一响应数据格式) 前言: 其实严格来说,ServerResponse应该归类到common包中.但是我实在太喜欢这玩意儿了.而且用得也非常频繁,所以忍不住推荐一下 ...
- Python day02 课堂笔记
今天是第二天学习Python课程,主要从格式化输出,逻辑运算,编码,数据类型 这几个方面来学习. 1.格式化输出: % : 占位符 %s:字符串 %d:数字 注意: 在格式化的输出中,如果要输出%(因 ...
- 你真的了解setState()吗?
React 中 setState()详细解读 对于 setState() 相信伙伴们都用过,它是 React 官方推荐用来更新组件 state 的 API,但是对于 setState() 你真的了解吗 ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(1)
材料说明: 文档<NVM-Express-1_4-2019.06.10-Ratified.pdf>来自于NVMe网站:https://nvmexpress.org/ 笔记目的是学习NVMe ...
- PythonI/O进阶学习笔记_2.魔法函数
前言: 本文一切观点和测试代码是在python3的基础上. Content: 1.什么是魔法函数,魔法函数__getitem__在python中应用. 2.python的数据模型和数据模型这种设计对p ...
- 01 - zabbix | LLD自动发现
01 - zabbix | LLD自动发现 1. 原理 zabbix支持设置变量,用{#VAR_NAME}来表示.然后有一些系统保留的变量 2. 设置 2.1 交换机电源自动发现 名字写好后进进入 ...