ListView-添加item的事件监听实例
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的事件监听实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
下一篇: Android 图片添加水印的实现方法