28

リストビューで複数のクリックイベントを無効にしようとしています.最初のクリックを押した後、一部のメディアがWebサービスから再生され、再生中に他のアイテムが必要でありclickable==false、メディアが再生された後、他のリストアイテムをクリックできる.

私がしようとしているのは、呼び出しとsetClickable(true)オブジェクトです。setClickable(false)ListView

4

10 に答える 10

70

カスタム ArrayAdapter で、次のように isEnabled メソッドをオーバーライドします。

@Override
public boolean isEnabled(int position) {
    return false;
}
于 2014-05-29T12:27:53.253 に答える
36

AreAllItemsEnabled () が false を返すArrayAdapter の独自のサブクラスを作成し、isEnabled(int position)を定義して、無効にするアイテムの特定のアイテムに対して false を返します。

于 2013-04-19T07:23:00.060 に答える
18

これをxmlに追加します

android:listSelector="@android:color/transparent"
于 2013-11-19T05:22:27.433 に答える
3

そのリストのアダプタを作成し、このメソッドをオーバーライドします

public boolean isEnabled(int position);

falseその後、クリックを無効にしたいときに戻ります

于 2014-05-15T12:14:32.773 に答える
2

上記の答えは私にとってはうまくいかなかったので、それを使用list.setEnabled(false)しました

于 2014-11-24T07:09:30.487 に答える
2

フラグを使用して Click イベントを管理します。

メディア プレーヤーの実行中に、このメソッドを使用してクリックを false に設定します。

setClickable(false);

メディア プレーヤーが停止している、実行されていない、または完了している場合は、そのフラグをデフォルト値に設定します。

 setClickable(true);
于 2013-04-20T04:39:11.320 に答える
2

onCreateの前:

private long mLastClickTimeListViewItem = 0; 

ListView アイテムの複数回のクリックを防ぐには

listView のリスナー内で onCreate を実行した後、私の場合は次のようになります。

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

            if (SystemClock.elapsedRealtime() - mLastClickTimeListViewItem < 1000){
                return ;
            }
            mLastClickTimeListViewItem = SystemClock.elapsedRealtime();

            //Do your remaining code magic below...
            ....
            ....

         } // end of onItemClick method   
    }); // end of setOnItemClickListner
于 2014-07-12T16:20:14.357 に答える
1

または、簡単な方法でOnItemClickListenerの登録を解除して登録することをお勧めします。

于 2014-01-20T12:46:30.667 に答える