効率配列アダプターを使用するカスタム AlertDialog で setMultiChoiceItems() を使用する方法は?

StackOverflow https://stackoverflow.com/questions/3410810

  •  25-09-2019
  •  | 
  •  

質問

私は、BaseAdapter (効率アダプター) を拡張するカスタム アダプターを使用する音楽プレーヤーを作成しています。 AlertDialog を使用して setAdapter() ここで、ユーザーは曲の 1 つをクリックしてプレイリスト内のその位置に切り替えるか、プレイリストから削除する曲をチェックすることができます。ユーザーが長押しするだけでリストから項目を削除できるように、カスタムのクリックリスナーを使用してみましたが、 listview ただ正しく動作しません...間違った項目(最後にある項目)を削除していましたが、 ArrayList 正しいプレイリスト項目が含まれていました...(アイテムをアイテムから削除したとき、 ArrayList, 、それを呼び出したアダプターに渡しました。 notifyDataSetChanged...しかし、私が言ったようにそれはうまくいきませんでした。間違いなくバグがあります AlertDialog ListView...なぜなら、正しい項目ではなく端から結果が飛び出す理由がないからです。

それで...次に試してみたい方法は、 setMultiChoiceItems() の方法 AlertDialog...しかし、カスタムアダプターでは動作しないようです...単純な配列のみ。サブクラス化する必要がありますか AlertDialog そして OverridesetMultiChoiceItems() メソッド、またはそれを機能させる方法はありますか 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);                         
    }

});
役に立ちましたか?

解決

参照する これ そして これ

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

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

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

これを渡す必要がある場合 AlertDialog 周りに回してから延長する AlertDialog 1 で説明したようにフィールド ブール値を作成しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top