0

ListView に問題があります。まず、この問題は実際の Android デバイスでのみ発生します。シミュレーターでは問題なく動作します。

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

リストビューのタッチイベントをインターセプトする必要があると思います。したがって、 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 に答える