7

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

});
4

1 に答える 1

3

これこれを参照してください

次に、byte[]への参照を渡しますsetMultiChoiceItems().

final boolean[] booleans = {false, true, false, true, false, false, false};

次に、booleans内部の値を確認しますsetPositiveButton().

これを渡す必要がある場合は、1で説明されているように、フィールドブール値をAlertDialog拡張して作成します。AlertDialog

于 2012-01-11T13:43:13.367 に答える