09 ListView监听 ExpandableListView的使用总结
1.ListView的滚动监听
>setOnScrollListener 监听
//ListVIew滚动监听
lv.setOnScrollListener(new OnScrollListener() {
/**
* 当滚动状态发生改变时 调用此方法
* 参数1:当前的ListView
* 参数2:ListView 滚动状态
* scrollState:
* SCROLL_STATE_IDLE:停止滚动的状态 常量值 0
* SCROLL_STATE_TOUCH_SCROLL:正在滚动 手指还在屏幕上 常量值 1
* SCROLL_STATE_FLING :代表滚动 形成惯性的动作 常量值 2
*
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
Log.e("AAA", "=====onScrollStateChanged==="+scrollState);
//判断到了底部并且 滚动停止 加载更多
if(isLast&&scrollState ==SCROLL_STATE_IDLE){
Toast.makeText(MainActivity.this, "加载更多", Toast.LENGTH_SHORT).show();
}
}
/**
* 当前控件滚动时 调用此方法
* 参数1:当前的ListView
* 参数2:当前屏幕展示第一条能看到的item的下标
* 参数3:屏幕展示能看到item的条数
* 参数4:listVIew 总的item数
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
Log.e("AAA", "===onScroll==firstVisibleItem"+firstVisibleItem+
"==visibleItemCount=="+visibleItemCount
+"==totalItemCount="+totalItemCount);
isLast = ((firstVisibleItem+visibleItemCount)==totalItemCount);
}
});
2,ListView的分页加载 >1,接口是分页加载的 >2,利用滚动监听 进行分页加载
3,ListView的图文混排 >概念:,先去下载字符串数据,将文本内容先展示出来,之后再下载图片 >注意:图片异位 >1,设置给控件一个图片 >2,给该控件设置标记(以图片的请求地址为标记) >3,判断反悔的 图片地址和控件里的设置的标记是否是同一个
回调接口:看图
5.ExpandableListView的使用
# 使用BaseExpandableListAdapter填充数据
#有10个方法 分组4个 子元素4个 底层设计一个 子元素能否点击一个
#4个监听
- 分组的点击事件
- setOnGroupClickListener
- 子元素的点击事件
- setOnChildClickListener
- 分组展开的监听
- setOnGroupExpandListener
- 分组折叠的监听
- setOnGroupCollapseListener
/**
* 获取分组的个数
*/
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groupData.length;
}
/**
* 获取当前下标分组里的子元素的个数
*/
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childData[groupPosition].length;
}
/**
* 获取当前下标分组的数据
*/
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groupData[groupPosition];
}
/**
* 获取分组下标为groupPosition里子元素的下标为childPosition的数据
*/
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childData[groupPosition][childPosition];
}
/**
* 获取下标为groupPosition分组的id
*/
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
/**
* 获取分组下标为groupPosition 里的子元素下标为childPosition元素的id
*/
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
/**
* 底层设计
* 分组和子元素是否有稳定的id 底层的数据改变不会影响他们
*/
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
/**
* 分组的视图对象
* 参数1:分组的位置下标
* 参数2:当前分组是否展开
* 参数3:复用的视图
* 参数4:指明父控件 ExpandableListView
*/
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_group, parent,false);
TextView tv = (TextView) view.findViewById(R.id.tv_item_group);
tv.setText(groupData[groupPosition]);
return view;
}
/**
* 子元素的视图
*
* 参数1:当前分组的下标
* 参数2:当前子元素的下标
* 参数3:是否是最后一个子元素视图
* 参数4:子元素复用视图
* 参数5:指明父控件 ExpandableListView
*/
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_child, parent,false);
TextView tv = (TextView) view.findViewById(R.id.tv_item_child);
tv.setText(childData[groupPosition][childPosition]);
return view;
}
/**
* 子元素能否被点击 false不能被点击 true可以被点击
*/
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
}
09 ListView监听 ExpandableListView的使用总结的更多相关文章
- 【Android】ListView监听上下滑动(判断是否显示返回顶部按钮
设置滚动监听判断ListView的滚动方向同时获取屏幕高度.ListView实际高度,判断是否需要展示返回顶部按钮 package com.zihao.activity; import java. ...
- listview监听组件内容变化
package com.meizu.ui.gifts; import android.app.Activity; import android.content.Context; import andr ...
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向
很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...
- Android修行之路------List view无法获取监听方法
注意: 1.在list view自定义布局中如果添加滚动布局,会导致自定义布局无法获取监听. 2.如果ListView的每项布局里有像Button,ImageButton之类View的控键时,这些Vi ...
- android listview 的监听事件
今天遇到了一个比较让我头疼的问题,不过追根揭底只是我对listview理解的不够透彻罢了, 闲言少叙,说说我遇到的问题吧: 上篇随笔我写了关于listview的使用,如果你也已经写好了列表那么恭喜这一 ...
- Android 监听ListView、GridView滑动到底部
// 监听listview滚到最底部 mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onS ...
- Android:监听ListView
本文目录 监听ListView点击事件 监听ListView滚动事件 监听ListView点击事件 使用监听器OnItemClickListener package com.example.tests ...
- Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)
1 MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...
- Android 关于在Activity中监听ListView
Android 开发时,最常用的控件之一就是ListView了,而使用ListView的同时,必然需要对它设置监听器,常用的监听器有这么几个: 1. OnItemClickListener // 监听 ...
随机推荐
- [BZOJ]1045 糖果传递(HAOI2008)
放一道数学题. Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n<=1000000,表示 ...
- VMware下安装Linux(CentOs6.3)操作系统
VMware 10.0.2 CentOs 6.3 VMware的安装以及CentOs的下载比较简单,这里不再描述 1.创建新的虚拟机 2.选择典型 3.选择稍后安装操作系统 4.选择如图所示 5.虚拟 ...
- Linux(CentOs6.3)网络配置
新装好的虚拟机往往还无法连接网络,本文描述了如何在CentOs6.3系统上配置网络信息 1.windows系统下快捷键windows+r,输入cmd并确定,打开黑窗口 2.黑窗口中输入ipconfig ...
- cocos2d-x-3.x 学习总结(一)
这周学习了<cocos2d-x 3.x 游戏开发之旅>的第三章,做如下总结: 1.关于创建标签对象 书中是 Label* label = Label::create(); 可是总是提示出错 ...
- unittest测试框架详谈及实操(二)
类级别的setUp()方法与tearDown()方法 在实操(一)的例子中,通过setUp()方法为每个测试方法都创建了一个Chrome实例,并且在每个测试方法执行结束后要关闭实例.是不是觉得有个多余 ...
- JAVA 访问WebRoot下的目录文件
转自 http://blog.csdn.net/jian_csdn/article/details/46119313 ClassLoader classLoader = Thread.currentT ...
- Maven实现多环境打包
在开发的过程中,经常需要面对不同的运行环境(开发环境.测试环境.生产环境.内网环境.外网环境等等),在不同的环境中,相关的配置一般不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置 ...
- Nginx 配置HTTPS 与Node.js 配置HTTPS方法
前段时间公司网站要求加上HTTPS安全CA证书,公司服务器全是阿里云服务器,并且配有负载均衡,所以选择直接在阿里云购买CA证书,阿里云有一种证书可以免费试用一年,决定申请此证书,阿里云证书需要验证,阿 ...
- js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题
js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...
- Spring统一返回Json工具类,带分页信息
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...