使用SimpleCursorAdapter的AlertDialog不显示值

时间:2011-12-12 22:49:55

标签: android alertdialog simplecursoradapter

我使用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 results not displaying in AlertDialog。但这对我没什么帮助。

编辑:
如果我切换到android.R.layout.simple_spinner_item,列表将以丑陋的方式显示。但条目是可见的。

3 个答案:

答案 0 :(得分:2)

文字在那里但由于风格而不可见。

我制作了自己的布局,风格略有不同。 这是sdk源中的原始simple_list_item_1。

<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"
/>

设置textcolor显示解决了问题 如果我使用AlertDialog.builder.setItem

设置项目,我不会使用哪种布局

答案 1 :(得分:1)

android.R.layout.simple_list_item_1中没有id.text1这样的项目。 但是simple_list_item_2有一个。

Here is the source code.

答案 2 :(得分:1)

两者都有正确的ID,这里是源代码......

RES / RES /布局/ 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 /布局/ 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之间的唯一区别。我很确定如果您使用完全相同的TextView编写自己的xml但没有样式,则文本可见。