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);
}
});