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的事件监听的更多相关文章

  1. 《WF in 24 Hours》读书笔记 - Hour 3(1) - Workflow:添加宿主和事件监听

    1. 创建项目组,并添加一个Console Project和Activity Library,在Activity Library的项目中添加CodeActivity1和CodeActivity2,最终 ...

  2. React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路

    React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路 这几天在忙着把自己做的项目中的类组件转化为功能相同的函数组件,首先先贴一份该组件类组件的关 ...

  3. Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  4. 关于v4包的Fragment过渡动画的事件监听无响应问题解决

    项目中部分功能模块采用了单Activity+多Fragment模式,当Fragment切换时,需要在过渡动画执行完后做一些操作,通常就是在自己封装的FragmentBase中重写onCreateAni ...

  5. Js事件监听封装(支持匿名函数)

    先看demo:http://liutian1937.github.io/demo/EventListen.html/*绑定事件与取消绑定*/ var handleHash = {}; var bind ...

  6. GridView添加事件监听和常用属性解析

    1. 使用流程 graph LR 准备数据源-->新建适配器 新建适配器-->绑定数据源 绑定数据源-->加载适配器 2. 常用属性 android:columnWidth:每一列的 ...

  7. Js 动态添加的数据,监听事件监听不到

    在开发中遇到这种问题,就是有些数据,比如按钮是动态添加进去的,结果添加事件监听无效,直接写死在页面上是可以的. 这就是很明显的加载先后顺序的问题了. 解决的方法: $(document).ready( ...

  8. vue自定义组件添加原生事件监听

    注:全局或局部注册的组件称为子组件,其中声明的组件名称(如下demo中的child)是一个自定义组件 Demo1-直接给父组件添加事件监听 <!DOCTYPE html> <html ...

  9. js添加事件监听的方式与this

    js添加事件监听与this js添加事件监听的方式与this 在标签中调用自定义函数 DOM0级事件处理程序 DOM2级事件处理程序 this 代表谁? js添加事件监听的方式与this <di ...

随机推荐

  1. 在C#中“?”有三种用法

    在C#中“?”有三种用法. 1.可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的.int i=null:编译器将 ...

  2. python用Django+Celery+Redis 监视程序(一)

    C盘创建一个目录就叫DjangoDemo,然后开始在该目录下操作. 1.新建Django工程与应用 运行pip install django 安装django 这里我们建一个名为demo的项目和hom ...

  3. ES6,数组遍历

    ES6提供了entries(),keys(),values()方法返回数组的遍历器,对于遍历器(Iterator)可以使用for...of进行便利,也可是使用entries()返回的遍历器Iterat ...

  4. qt的信号与槽函数

    关联: bool connect ( const?QObject?*?sender, const?char?*?signal, const QObject * receiver, const char ...

  5. c语言环境初始化&c语言和汇编混合编程

    bootloader通常会分为两个阶段:第一阶段采用汇编语言来编写,主要是一些核心的初始化工作(内存,时钟的初始化),第二阶段使用C语言来编写,主要是它会完成一些板载硬件的初始化(串口,网口)然后其启 ...

  6. pygame写贪吃蛇

    python小白尝试写游戏.. 学了点pygame不知道那什么练手好,先拿贪吃蛇开刀吧. 一个游戏可以粗略的分为两个部分: 数据(变量) 处理数据(函数,方法) 设计变量 首先预想下,画面的那些部分需 ...

  7. 940D Alena And The Heater

    传送门 题目大意 给出两个长度为N的数组A,B,以及一种计算规律: 若t[i]=1,需满足t[i-1]=t[i-2]=t[i-3]=t[i-4]=0,以及max{A[i],A[i-1],A[i-2], ...

  8. 对于java中的"\"和"/" 区别

    "\"在mac系统和类Unix 系统中是识别不出来的,对于java这种跨平台的语言来说不宜使用这个符号 "/"使用这个符号一般 都可以被识别

  9. 高可用之KeepAlived(2):keepalived+lvs

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  10. Redux:从action到saga

    前端应用消失的部分 一个现代的.使用了redux的前端应用架构可以这样描述: 一个存储了应用不可变状态(state)的store 状态(state)可以被绘制在组件里(html或者其他的东西).这个绘 ...