web-dev-qa-db-ja.com

Android ListViewアイテムのクリックイベントを無効にする

リストビューで複数のクリックイベントを無効にしようとしています。最初のクリックを押した後、いくつかのメディアはウェブサービスから再生されますが、再生中は他のアイテムは_clickable==false_である必要がありますクリック可能。

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

25
user2143831

カスタムArrayAdapterオーバーライドisEnabledメソッドで次のように

@Override
public boolean isEnabled(int position) {
    return false;
}
62
Salim

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

34
Ion Aalbers

これをxmlに追加します

Android:listSelector="@Android:color/transparent"
15
DropAndTrap

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

public boolean isEnabled(int position);

クリックを無効にする場合は、falseを返します

3
Ben

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

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

setClickable(false);

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

 setClickable(true);
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
2
Basher51

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

1
sham.y

または、簡単な方法で登録解除と登録を行いますOnItemClickListenerをお勧めします。

0
CoDe