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 4727: [POI2017]Turysta
4727: [POI2017]Turysta Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 117 Solved ...
- django rest-framework 1.序列化 一
上图为项目完整的目录结构 一.入门 需要先安装需要使用到包 pip install django pip install djangorestframework 先来创建一个新项目 django-ad ...
- python安装pip以及导入第三方包
python有着强大的第三方库,数量很多且功能强大. 最原始的办法是在官网上下载压缩包,解压,然后运行setup.py来进行安装. 显然这种方法很繁琐,不方便.因此有了包管理工具. pip是一个包管理 ...
- java线程池的使用
一.简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后加入了java.uti ...
- 关闭默认共享,禁止ipc$空连接
关闭默认共享,禁止ipc$空连接 要防止别人用ipc$和默认共享入侵,需要禁止ipc$空连接,避免入侵者取得用户列表,并取消默认共享 禁止ipc$空连接进行枚举运行regedit,找到如下组键[HKE ...
- java异常处理之throw, throws,try和catch
转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...
- Spring使用webjar
注意事项 这玩意很简单,但是我们第一次搞就是搞不成功,为什么呢?因为我们都用的是idea或者eclipse编译.webjar只能在maven上才能打包,所以在使用时,记得maven-clean和mav ...
- Openlayers3学习心得(初识)
最近刚辞了原来的那家公司,准备新找一份工作.其中有个公司要求会Openlayers3.一看到这个要求,就知道公司业务涉及地图图表比较多. Openlayers本身是一个基于GIS地图相关的功能丰富的J ...
- A potentially dangerous Request.Form value was detected from the client问题处理
问题剖析: 用户在页面上提交表单到服务器时,服务器会检测到一些潜在的输入风险,例如使用富文本编辑器控件(RichTextBox.FreeTextBox.CuteEditor等)编辑的内容中包含有HTM ...
- 苹果OS系统安装Xcode方法
打开Xcode系统,在app store 里面找到自己系统对应的可升级的Xcode版本进行下载,下载到本地后,设置存放Xcode存放的文件夹为共享文件夹. 在MAC OS共享文件夹里面找到Xcode安 ...