Android simple_list_item_single_choice空白使用SimpleCursorAdapter时

时间:2011-12-26 15:28:53

标签: android list simplecursoradapter

对于我的生活,我无法想到这一点。我正在查询数据库中的列表,并将该列表传递给AlertDialog以获取用户输入。我目前正在使用simple_spinner_item,数据显示得很好。但是,使用此方法时行太窄,我想更改宽度。我尝试了几种不同的方法:

  1. 更改:

    android.R.layout.simple_spinner_item
    
  2. 基于列表的布局,如:

        android.R.layout.simple_list_item_single_choice
    

    这将是完美的,但列表是空白的!当我单独点击它们时,项目会显示出来。所以这不起作用。

    1. 我还尝试使用带有Textview定义的自定义XML文件,并设置这样的下拉资源(文件:db_view_row.xml):

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout android:id="@+id/LinearLayout01"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      xmlns:android="http://schemas.android.com/apk/res/android">
      <TextView android:text=""
      android:id="@+id/tvDBViewRow"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textColor="#FF0000" />  
      </LinearLayout> 
      
    2. 并在此处引用它:

          int[] to = new int[] { android.R.id.db_view_row}; 
          adapterDenomination.setDropDownViewResource(R.layout.db_view_row);
      

      这也不起作用(空白行),虽然我最初使用了一个直的微调器(它不能使用,因为第一个项目是自动选择的)。

      以下是原始代码段:

                  String[] from = new String[] {"denomination_desc" };                
                  int[] to = new int[] { android.R.id.text1 }; 
      
                  cursor.moveToFirst();
      
                  SimpleCursorAdapter adapterDenomination = new SimpleCursorAdapter(CoinsScreen.this, 
                          android.R.layout.simple_spinner_item, cursor, from, to  ); 
      
      
      
                   new AlertDialog.Builder(CoinsScreen.this) 
                    .setTitle("Select Denomination") 
                    .setAdapter(adapterDenomination, new DialogInterface.OnClickListener() 
                    { 
      
                      public void onClick(DialogInterface dialog, int which) 
                      { 
                             (...)
      

      谢谢!

1 个答案:

答案 0 :(得分:0)

自定义XML文件解决方案应该有效,但可能是由于指向了错误的id。

你有:

int[] to = new int[] { android.R.id.db_view_row}; 
adapterDenomination.setDropDownViewResource(R.layout.db_view_row);

可能应该是:

int[] to = new int[] { R.id.tvDBViewRow }; 
adapterDenomination.setDropDownViewResource(R.layout.db_view_row);

此外,如果您仍然无法使其工作,请尝试将以下行添加到自定义TextView中:

style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceLargeInverse"

干杯!