効率配列アダプターを使用するカスタム AlertDialog で setMultiChoiceItems() を使用する方法は?
-
25-09-2019 - |
質問
私は、BaseAdapter (効率アダプター) を拡張するカスタム アダプターを使用する音楽プレーヤーを作成しています。 AlertDialog
を使用して setAdapter()
ここで、ユーザーは曲の 1 つをクリックしてプレイリスト内のその位置に切り替えるか、プレイリストから削除する曲をチェックすることができます。ユーザーが長押しするだけでリストから項目を削除できるように、カスタムのクリックリスナーを使用してみましたが、 listview
ただ正しく動作しません...間違った項目(最後にある項目)を削除していましたが、 ArrayList
正しいプレイリスト項目が含まれていました...(アイテムをアイテムから削除したとき、 ArrayList
, 、それを呼び出したアダプターに渡しました。 notifyDataSetChanged
...しかし、私が言ったようにそれはうまくいきませんでした。間違いなくバグがあります AlertDialog ListView
...なぜなら、正しい項目ではなく端から結果が飛び出す理由がないからです。
それで...次に試してみたい方法は、 setMultiChoiceItems()
の方法 AlertDialog
...しかし、カスタムアダプターでは動作しないようです...単純な配列のみ。サブクラス化する必要がありますか AlertDialog
そして Override
の setMultiChoiceItems()
メソッド、またはそれを機能させる方法はありますか ArrayAdapter
?
基本的に、リストを反復する方法さえわかりません。 AlertDialog
作成するか、あるいはそのビューを何らかの形で渡すかどうか。また、クリック音も聞けないと思います。 checkboxes
それらを行に追加すると。ご協力をよろしくお願いいたします。
編集:ここで質問するのは魔法のようです...私は自分自身の質問に答えました...これが私がやった方法です。それぞれにヒントを追加しました checkbox
これは、 ArrayList
. 。それから私は使用しました OnCheckedChangeListener
選択範囲をキャプチャします。ヒントを設定すると、テキストが追加されます checkbox
...の背景から AlertDialog
は白です (クリックされたアイテムでも?) ヒントのテキストの色を透明に設定しただけです。
holder.check.setHintTextColor(Color.TRANSPARENT);
holder.check.setHint(String.valueOf(position));
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
int position = Integer.parseInt((String) buttonView.getHint());
Log.v("onCheckedChanged", "Checked: "+isChecked+" returned: "+position+" which should be "+getItem(position).name);
}
});