0

我对 ListView 有疑问。首先,这个问题只出现在我真正的安卓设备上,在模拟器上运行正常。

1 我有一个 ListView:listVew。在它的每一行中,都有一个imageView:picView。我在自定义的适配器中为图像视图设置了一个长按监听器:

picView.setOnLongClickListener(new View.OnLongClickListener()
{
   public boolean onLongClick(View v) 
   {
        ...
   }
}

当我长按 imageView 时,它会移动。

2 在我的 Activity 类中,我在 listView 的每个项目上设置了 OnItemClick 侦听器。

listView.setOnItemClickListener(new OnItemClickListener()
{
    public void onItemClick(AdapterView<?> parent, View view,int position, long id)
    {
        ...
    }
}

问题是,在真实设备中,当我长按 imageView 并向上移动手指时,OnItemClick 方法被激活。在模拟器中,这从未发生过。

有谁知道为什么会这样?非常感谢!

添加:

我在模拟器中测试了更多次,现在我认为这个问题现在可以很容易地描述如下:

当设备检测到 longclicklistener 时,有没有办法禁用其他 TouchEvent 侦听器?

4

1 回答 1

1

我认为你需要拦截listview的触摸事件。所以尝试在 Adapter.getView() 中设置 OnClickListener

View getView(View convertView, int position, ViewGroup parent){
    convertView.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            onItemClick(parent, convertView, position, 0);
        }
    });
    return convertView;
}
于 2012-11-06T05:36:10.340 回答