Диалог с несколькими вариантами выбора и пользовательским представлением - PullRequest
2 голосов
/ 25 октября 2011

Я борюсь с этой проблемой уже целый день и просто не могу понять, как ее решить.

Итак, у меня есть 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 в качестве второго параметра setAdapter, но это закрывает диалоговое окно после выбора одного параметра.

Пытаясь исправить это, я добавил setOnClickListener() в свой ContactsAdapter, когда получаю макет строки, например:

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

Это работает, но я прекращаю получать выделение, когда щелкаю по строке, чего я действительно не хочу.

Есть идеи, как это решить? Я знаю, что мог бы использовать ListActivity, и это было бы легко решить, но я действительно хочу сделать это в диалоге. Спасибо!

1 Ответ

2 голосов
/ 25 октября 2011

Если вы думаете, что было бы легко сделать использование ListActivity, почему бы не сделать это и использовать тему диалога, используя setTheme(android.R.style.Theme_Dialog) или android:theme="@android:style/Theme.Dialog" для Activity в манифесте приложения?

Если вы нацелены на Honeycomb или Ice Cream Sandwich (Android 3.0+), они называются setTheme(android.R.style.Theme_Holo_Dialog) и android:theme="@android:style/Theme.Holo.Dialog".

.
...