2011-12-26 3 views
1

Je ne peux pas comprendre celui-ci pour la vie de moi. J'interroge une base de données pour une liste, et passe cette liste à un AlertDialog pour obtenir l'entrée de l'utilisateur. J'utilise un simple_spinner_item actuellement, et les données s'affichent très bien. Cependant, les lignes sont trop étroites en utilisant cette méthode, et je voudrais changer la largeur. J'ai expérimenté avec deux méthodes différentes:Android simple_list_item_single_choice Blank Lorsque j'utilise SimpleCursorAdapter

  1. Changer le:

    android.R.layout.simple_spinner_item 
    

Pour une liste mise en page basée comme:

android.R.layout.simple_list_item_single_choice 

Ce serait parfait, mais le la liste est vide! Les éléments apparaissent lorsque je les clique individuellement. Donc ça ne marche pas.

  1. J'ai aussi essayé d'utiliser un fichier XML personnalisé avec la définition d'un Textview, et la mise en place de la liste déroulante des ressources comme celui-ci (fichier: 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> 
    

et le référencement ici:

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

cela ne fonctionne pas non plus (lignes vides), bien que quand je une fileuse droite à l'origine, il a fait (que je ne peux pas utiliser car le premier élément est automatiquement sélectionné).

Voici l'extrait de code d'origine:

  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) 
       { 
         (...) 

Merci!

Répondre

0

La solution de fichier XML personnalisé aurait dû fonctionner, mais cela était probablement dû à un ID erroné.

Vous avez eu:

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

Probablement il aurait dû être:

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

De plus, si vous ne pouvez pas toujours travailler, essayez d'ajouter les lignes suivantes à votre TextView personnalisé :

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

Cheers!

+0

Wow, merci pour l'aide rapide! mais malheureusement, ça ne marche toujours pas. J'ai fait une erreur dans le post original, je l'ai fait: int [] to = new int [] {R.id.tvDBViewRow} ;, j'ai foiré dans l'éditeur et collé un commentaire .... J'ai essayé d'ajouter le attribut de style au XML. La seule façon de le faire fonctionner est d'utiliser int [] to = new int [] {R.id.text1}; et simple_spinner _item, qui, malheureusement, ne fonctionnera pas pour cette application. Tout le reste, j'ai essayé soit résultats dans une ligne vide, ou une ligne qui met en évidence le contenu lorsque cliqué –

+0

simple_dropdown_item_1line semble fonctionner avec int [] to = new int [] {R.id.text1}; mais c'est moche et en fait trop grand. Toujours ne peut pas sembler trouver la bonne combinaison pour obtenir cette textview XML personnalisée pour travailler .... –

+0

Hmm ... étrange.J'ai eu un problème similaire, que j'ai résolu en utilisant un ArrayAdapter par défaut avec une disposition personnalisée (final ArrayAdapter adapter = new ArrayAdapter (this, R.layout.dropdown_item, R.id.txt_spinner);) et en définissant les champs TextView comme ceux que j'ai posté ci-dessus plus la mise en couleur au noir. – jcxavier

Questions connexes