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 // 监听 ...
随机推荐
- hdu 5437Alisha’s Party(优先队列)
题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当所有人到时会再开一次,每次都是礼物价值高的人先进. /*小伙伴最开始gg了,结果发现 ...
- [bzoj3673/3674可持久化并查集加强版]
n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n,m<=2 ...
- JavaScript和DOM
body { margin: 0 } .left { float: left } .right { float: right } .pg-head { height: 48px; background ...
- Jenkins简明入门(一) -- 安装
如今Jenkins官网的Guide里使用了Docker,网上很多Jenkins入门教程都已过时了,所以写这一篇入门教程. 官网的Guide Link是:https://jenkins.io/doc/p ...
- 从Openvswitch代码看网络包的旅程
我们知道,Openvwitch可以创建虚拟交换机,而网络包可以通过虚拟交换机进行转发,并通过流表进行处理,具体的过程如何呢? 一.内核模块Openvswitch.ko的加载 OVS是内核态和用户态配合 ...
- 安装插件出现eclipse An internal error occurred during: "Installing Software". xxxxxxxxx
就是你自己本来就有那个插件了 百度怎么删吧.... 看一下我这个文章 强烈建议本地安装的时候用第四种安装 http://www.cnblogs.com/ydymz/articles/7203260.h ...
- 数据结构之Trie树
1. 概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. Trie一词来自retrieve,发音为/tr ...
- Answers to "Why are my jobs not running?"
from :https://community.oracle.com/thread/648581 This is one of the most common Scheduler questions ...
- ACM pie
我的生日快到了,传统上我正在做馅饼.不只是一个馅饼,不,我有N个,各种口味和各种尺寸. 数量为F我的朋友会来到我的聚会,每个人都得到一个馅饼. 这应该是一块馅饼,而不是几个小块,因为看起来很乱.这一块 ...
- ACM 今年暑假不AC
"今年暑假不AC?" "是的." "那你干什么呢?" "看世界杯呀,笨蛋!" "@#$%^&*%... ...