AlertDialog с использованием SimpleCursorAdapter не отображает значения - PullRequest
2 голосов
/ 13 декабря 2011

Я использую SimpleCursorAdapter, чтобы заполнить список внутри AlertDialog. SimpleCursorAdapter использует макет android.R.layout.simple_list_item_1.

Откроется диалоговое окно. Список содержит правильное количество записей. Но ничего не отображается. Если я выбираю одну запись, выбранная запись не выделяется, и отображается текст от моего курсора.

Выбор выбирает правильную запись.

Вот мой код:

Intent dataIntent = new Intent();
dataIntent.setData(Ereignistypen.CONTENT_URI);
Cursor cursor = managedQuery(dataIntent.getData(), new String[] {
        Ereignistypen._ID, // 0
        Ereignistypen.NAME // 1
    }, null, null, Ereignistypen.ORDERBY);

SimpleCursorAdapter typAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor,
        new String[] { Ereignistypen.NAME }, new int[] { android.R.id.text1 });

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.ereignistyp);
builder.setAdapter(typAdapter, this);
AlertDialog typPicker = builder.create();
typPicker.show();

Что я не прав?

Я проверил Результаты Android SimpleCursorAdapter не отображаются в AlertDialog . Но это мало помогло мне.

EDIT:
Если я переключаюсь на android.R.layout.simple_spinner_item, список отображается в ужасном стиле. Но записи видны.

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

Текст есть, но не виден из-за стиля.

Я сделал свой собственный макет с немного разными стилями. Это оригинал simple_list_item_1 из исходников sdk.

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@android:id/text1"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:textAppearance="?android:attr/textAppearanceLarge"
   android:gravity="center_vertical"
   android:paddingLeft="6dip"
   android:minHeight="?android:attr/listPreferredItemHeight"
/>

Я расширил до следующего:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@android:id/text1"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:textAppearance="?android:attr/textAppearanceLarge"
   android:textColor="?android:attr/textColorPrimaryInverseDisableOnly"
   android:gravity="center_vertical"
   android:paddingLeft="6dip"
   android:minHeight="?android:attr/listPreferredItemHeight"
/>

Задание явного цвета текста решило проблему.
Я не уверен, какой макет используется, если я устанавливаю элементы с помощью AlertDialog.builder.setItem

1 голос
/ 13 декабря 2011

Оба имеют правильный идентификатор, здесь исходный код ...

res / res / layout / simple_list_item_1.xml

<TextView android:id="@android:id/text1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" android:paddingLeft="6dip" 
    android:minHeight="?android:attr/listPreferredItemHeight"/>

res / res / layout / simple_spinner_item.xml

<TextView android:id="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/>

Я думаю, что проблема связана со стилем, возможно, текст есть, но не виден.Это единственная разница между 2 TextView.Я уверен, что если вы напишите свой собственный XML с точно таким же TextView, но без стиля, текст будет видимым.

1 голос
/ 13 декабря 2011

Нет такого элемента как id.text1 в android.R.layout.simple_list_item_1. Но у simple_list_item_2 есть один.

Вот исходный код.

...