2

私はこの問題に1日苦労していますが、解決方法がわかりません。

そのため、選択する項目のリストを表示する AlertDialog があります。これらのアイテムには複数のテキスト ビューが必要なので、setMultiChoiceItems()デフォルト フォーマットを使用するシンプルなビルダーに頼ることはできません。

ここでは、次のようにしてカスタム ArrayAdapter を使用します。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose details to display");
builder.setAdapter(new ContactAdapter(this, 0, items), null);

OnClickListenerの 2 番目のパラメータとしてan を使用できると思っていましsetAdapterたが、1 つのオプションを選択するとダイアログが閉じてしまいます。

これを修正しようとしてsetOnClickListener()、次のように、行レイアウトを取得するときに ContactsAdapter 内に を追加しました。

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.contact_row, null);
view.setOnClickListener(new OnClickListener() {....}

これは機能しますが、行をクリックするとハイライトが表示されなくなります。これは本当に望ましくありません。

これを解決する方法はありますか?ListActivity を使用できることはわかっていますが、それは簡単に解決できますが、実際にはダイアログでこれを実行したいと考えています。ありがとう!

4

1 に答える 1

2

を使用して簡単に実行できると思われる場合は、それを行い、アプリケーション マニフェストのアクティビティに対してまたはをListActivity使用してダイアログ テーマを使用してみませんか?setTheme(android.R.style.Theme_Dialog)android:theme="@android:style/Theme.Dialog"

Honeycomb または Ice Cream Sandwich (Android 3.0 以降) をターゲットにしている場合は、 and と呼ばsetTheme(android.R.style.Theme_Holo_Dialog)android:theme="@android:style/Theme.Holo.Dialog"ます。

于 2011-10-25T15:29:13.797 に答える