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