リストビューで複数のクリックイベントを無効にしようとしています.最初のクリックを押した後、一部のメディアがWebサービスから再生され、再生中に他のアイテムが必要でありclickable==false
、メディアが再生された後、他のリストアイテムをクリックできる.
私がしようとしているのは、呼び出しとsetClickable(true)
オブジェクトです。setClickable(false)
ListView
カスタム ArrayAdapter で、次のように isEnabled メソッドをオーバーライドします。
@Override
public boolean isEnabled(int position) {
return false;
}
AreAllItemsEnabled () が false を返すArrayAdapter の独自のサブクラスを作成し、isEnabled(int position)を定義して、無効にするアイテムの特定のアイテムに対して false を返します。
これをxmlに追加します
android:listSelector="@android:color/transparent"
そのリストのアダプタを作成し、このメソッドをオーバーライドします
public boolean isEnabled(int position);
false
その後、クリックを無効にしたいときに戻ります
上記の答えは私にとってはうまくいかなかったので、それを使用list.setEnabled(false)
しました
フラグを使用して Click イベントを管理します。
メディア プレーヤーの実行中に、このメソッドを使用してクリックを false に設定します。
setClickable(false);
メディア プレーヤーが停止している、実行されていない、または完了している場合は、そのフラグをデフォルト値に設定します。
setClickable(true);
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
または、簡単な方法でOnItemClickListenerの登録を解除して登録することをお勧めします。