黑马程序员技术交流社区

标题: android 处理 onLongClickLisener, 长按和短按都被响应了解决办法 [打印本页]

作者: 小蔡来学java    时间: 2016-7-24 21:45
标题: android 处理 onLongClickLisener, 长按和短按都被响应了解决办法
public abstract boolean onItemLongClick (AdapterView parent, View view, int position, long id)

  当按下视图中的项目并保持按下状态(长按)时执行的回调函数。 实现时如果需要访问与选中条目关联的数据,可以调用 getItemAtPosition(position)。
  参数
  parent 发生点击事件的 AbsListView。
  view    AbsListView 中被点击的视图。
  position    视图在一览中的位置(索引)。
  id 被点击条目的行 ID。
  返回值
  如果回调函数处理了长按事件,返回真;否则返回假。

        muview.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView arg0, View arg1,
    int arg2, long arg3) {
    // TODO Auto-generated method stub
    Log.e("setOnItemLongClickListener", "setOnItemLongClickListener");
    return true;
    }
         
         });
        muview.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(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:如果回调函数处理了长按事件,返回真;否则返回假




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2