文章出处:http://blog.sina.com.cn/s/blog_4e1e357d0102uwhe.html
publicabstract boolean onItemLongClick (AdapterView parent, View view,int position, long id)
当按下视图中的项目并保持按下状态(长按)时执行的回调函数。实现时如果需要访问与选中条目关联的数据,可以调用 getItemAtPosition(position)。
参数
parent发生点击事件的 AbsListView。
view AbsListView中被点击的视图。
position 视图在一览中的位置(索引)。
id 被点击条目的行ID。
返回值
如果回调函数处理了长按事件,返回真;否则返回假。
muview.setOnItemLongClickListener(new OnItemLongClickListener(){
@Override
publicboolean onItemLongClick(AdapterView arg0, View arg1,
intarg2, long arg3) {
// TODOAuto-generated method stub
Log.e("setOnItemLongClickListener","setOnItemLongClickListener");
returntrue;
}
});
muview.setOnItemClickListener(newOnItemClickListener(){
@Override
public voidonItemClick(AdapterView arg0, View arg1, int arg2,
long arg3){
Log.e("setOnItemClickListener","setOnItemClickListener");
}
});
可以看到系统是优先相应clicklisener的,他是没有返回值的。
而对于onLongClickLisener是有一个返回值标识。对于一次长按操作,如果返回false,则2个lisener都会相应,如果返回true则时间被longClick链式拦截,后面的【clickLisener处于后面的位置】的注册的lisener将不再向上回调;
在处理长按时,注意的细节是把onItemLongClick返回设置为true,否则长按是会执行setOnItemClickListener
之前对长按操作处理有误,返回了false;
正确应该 回调系统return true;
NOTE:如果回调函数处理了长按事件,返回真;否则返回假
还有一点需要说的是:要将长按写在单击前面,我也是去尝试发现的