1. 点击事件(OnItemClickListener)
onItemClick(AdapterView<?> parent, View view, int position, long id)
parent:官方解释为:The AdapterView where the click happened,也就是用户所点击的AdapterView,这个参数一般不用。
view:当前点击的列表项所对应的布局View对象,可通过这个参数获得相应的列表项内部的组件,进而对其进行操作。举个例子,假设有一个ListView,含有4个列表项,你点了第2个,那么通过view你就可以操作第2个列表项里面的TextView、ImageView等等的组件(假设存在)。
position:当前点击的列表项的位置,从0开始,也就是点击第n个,position就是n-1。
id:当前点击的列表项的序号,也是从0开始,所以大部分时候position和id是一样的,至于这两个参数之间有什么不同,有兴趣的童鞋可以深究一下。
public class MainActivity extends Activity implements AdapterView.OnItemClickListener{
private ListView myListView;
private SimpleAdapter simpleAdapter;
private List<Map<String, Object>> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data = new ArrayList<Map<String, Object>>();
simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.text});
myListView = (ListView) findViewById(R.id.myListView);
//设置监听器
myListView.setAdapter(simpleAdapter);
myListView.setOnItemClickListener(this);
}
private List<Map<String, Object>> getData() {
for (int i = 0; i < 20; i++) {
Map<String, Object>map = new HashMap<String, Object>();
map.put("img", R.mipmap.ic_launcher);
map.put("text", "初始simpleAdapter"+(i+1));
data.add(map);
}
return data;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//通过view获取其内部的组件,进而进行操作
String text = (String) ((TextView)view.findViewById(R.id.text)).getText();
//大多数情况下,position和id相同,并且都从0开始
String showText = "点击第" + position + "项,文本内容为:" + text + ",ID为:" + id;
Toast.makeText(this, showText, Toast.LENGTH_LONG).show();
}
}
2. 滚动事件(OnScrollListener)
void onScrollStateChanged(AbsListView view, int scrollState)
监听滚动状态的变化。
view:正在被滚动的视图,也就是当前的ListView。
scrollState:滚动状态,分别有以下几种:
SCROLL_STATE_TOUCH_SCROLL:滑动状态,手指在视图滑动,并且手指一直停留在屏幕上而未离开。
SCROLL_STATE_FLING:投掷状态,手指在离开视图前,用力划了一下(想象将视图投掷出去的感觉),视图会按照惯性滑动至停止。
SCROLL_STATE_IDLE:闲置状态,什么都没做的状态。当投掷状态或触摸滚动状态结束时,进入闲置状态。
void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
监听非滚动状态,只要ListView不滚动,就会被不断调用。
view:正在被滚动的视图,也就是当前的ListView。
firstVisibleItem:已加载的第一个列表项的索引值。
visibleItemCount:已加载的列表项的总数。
totalItemCount:适配器中数据源对应的列表项总数。
public class MainActivity extends Activity implements AbsListView.OnScrollListener{
private ListView myListView;
private SimpleAdapter simpleAdapter;
private List<Map<String, Object>> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data = new ArrayList<Map<String, Object>>();
simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.text});
myListView = (ListView) findViewById(R.id.myListView);
myListView.setAdapter(simpleAdapter);
//设置监听器
myListView.setOnScrollListener(this);
}
private List<Map<String, Object>> getData() {
for (int i = 0; i < 20; i++) {
Map<String, Object>map = new HashMap<String, Object>();
map.put("img", R.mipmap.ic_launcher);
map.put("text", "初始simpleAdapter"+(i+1));
data.add(map);
}
return data;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
//投掷状态
case SCROLL_STATE_FLING:
Toast.makeText(this, "SCROLL_STATE_FLING", Toast.LENGTH_SHORT).show();
break;
//闲置状态
case SCROLL_STATE_IDLE:
Toast.makeText(this, "SCROLL_STATE_IDLE", Toast.LENGTH_SHORT).show();
break;
//滑动状态
case SCROLL_STATE_TOUCH_SCROLL:
Toast.makeText(this, "SCROLL_STATE_TOUCH_SCROLL", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// Toast.makeText(this, "滚动已停止,已加载的第一项的索引为:" + firstVisibleItem +
// ",已加载的列表项总数为:" + visibleItemCount + ",存在的列表项总数为:" +
// totalItemCount, Toast.LENGTH_LONG).show();
}
}
以上这篇ListView-添加item的事件监听实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# listview
# item监听
# android为ListView每个Item上面的按钮添加事件
# Android ListView监听滑动事件的方法(详解)
# Android 中ListView的Item点击事件失效的快速解决方法
# 详解ListView中多种item的实现方式
# ListView点击Item展开菜单实现代码详解
# 加载
# 给大家
# 数为
# 就会
# 第一个
# 是从
# 这两个
# 点了
# 对其
# 希望能
# 有兴趣
# 几种
# 这篇
# 可通过
# 停留在
# 你就可以
# 别有
# 结束时
# 小编
# 什么都没
相关文章:
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何在云指建站中生成FTP站点?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
建站之星备案是否影响网站上线时间?
香港服务器WordPress建站指南:SEO优化与高效部署策略
建站上传速度慢?如何优化加速网站加载效率?
如何在云主机上快速搭建网站?
制作销售网站教学视频,销售网站有哪些?
网站制作公司排行榜,四大门户网站排名?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
seo网站制作优化,网站SEO优化步骤有哪些?
小程序网站制作需要准备什么资料,如何制作小程序?
用v-html解决Vue.js渲染中html标签不被解析的问题
如何获取上海专业网站定制建站电话?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
建站之星如何实现五合一智能建站与营销推广?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
C#如何序列化对象为XML XmlSerializer用法
如何快速搭建二级域名独立网站?
高性价比服务器租赁——企业级配置与24小时运维服务
如何通过虚拟主机快速完成网站搭建?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
黑客如何通过漏洞一步步攻陷网站服务器?
建站168自助建站系统:快速模板定制与SEO优化指南
如何批量查询域名的建站时间记录?
如何访问已购建站主机并解决登录问题?
智能起名网站制作软件有哪些,制作logo的软件?
北京制作网站的公司,北京铁路集团官方网站?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
广德云建站网站建设方案与建站流程优化指南
制作门户网站的参考文献在哪,小说网站怎么建立?
TestNG的testng.xml配置文件怎么写
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
网站制作壁纸教程视频,电脑壁纸网站?
如何配置IIS站点权限与局域网访问?
如何快速搭建自助建站会员专属系统?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
在线制作视频网站免费,都有哪些好的动漫网站?
视频网站制作教程,怎么样制作优酷网的小视频?
高防服务器:AI智能防御DDoS攻击与数据安全保障
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
建站之星24小时客服电话如何获取?
*请认真填写需求信息,我们会在24小时内与您取得联系。