Android - Texte déroulant de sélection/de Spinner ne montre pas
Je suis à l'aide de cet exemple de code pour remplir la casserole. Les données sont lues à partir de la base de données. La sélection s'affiche correctement - dans ce cas, il montre "Vert" et "Rouge".
Spinner spinnerColor = (Spinner) findViewById(R.id.spinnertProfile);
mProfileDbHelper = new ProfileDbAdapter(this);
mProfileDbHelper.open();
Cursor profilesCursor = mProfileDbHelper.fetchAllProfiles();
startManagingCursor(profilesCursor);
//Create an array to specify the fields we want to display in the list
String[] from = new String[] { ProfileDbAdapter.COL_PROFILE_TITLE };
//and an array of the fields we want to bind those fields to
int[] to = new int[] { R.id.textviewColors };
//Now create a simple cursor adapter and set it to display
SimpleCursorAdapter profilesAdapter = new SimpleCursorAdapter(this,
R.layout.profile_color, profilesCursor, from,
to);
spinnerColor.setAdapter(profilesAdapter);
}
Cependant, quand j'ai changé d'utiliser une mise en page différente android.R.de mise en page.simple_spinner_dropdown_item. Le Spinner un Texte disparu.
//Now create a simple cursor adapter and set it to display
SimpleCursorAdapter profilesAdapter = new SimpleCursorAdapter(this,
R.layout.profile_color, profilesCursor, from,
to);
profilesAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerColor.setAdapter(profilesAdapter);
Voir des instantanés de sans et avec simple_spinner_dropdown_item ci-dessous:
Tout ce que je peut manquer?
est
Qberticus, je ne suis pas sûr que je comprends ce que vous dites. Je suis un Android newbie 🙂 Le textviewColors est l'ID de la TextView dans le layout/profile_color.xml où profilesAdapter se réfère lorsqu'il instancie comme SimpleCursorAdapter.
textviewColors
utilisé dans simple_spinner_dropdown_item
? J'avais le double de vérifier les fautes de frappe.Qberticus, je ne suis pas sûr que je comprends ce que vous dites. Je suis un Android newbie 🙂 Le textviewColors est l'ID de la TextView dans le layout/profile_color.xml où profilesAdapter se réfère lorsqu'il instancie comme SimpleCursorAdapter.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="" android:id="@+id/textviewColors" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout>
OriginalL'auteur user370640 | 2010-06-18
Vous devez vous connecter pour publier un commentaire.
Ok, ce qui se passe est que lorsque vous êtes à l'appel de
setDropDownViewResource
vous êtes le remplacement de la disposition que vous avez déjà spécifié dans le constructeur. Dans votre casR.layout.profile_color
.SimpleCursorAdapter
s'étendResourceCursorAdapter
et dans le constructeur, les deux mises en page égaux les uns aux autres.Le problème se pose lorsque vous appelez
setDropDownViewResource
et modifier la liste déroulante mise en page. LeSimpleCursorAdapter
allons continuer à utiliser le même id de ressource liaisons que vous avez spécifié dans le constructeur.Ce que vous devez faire est de spécifier uniquement la mise en page dans le
SimpleCursorAdapter
'constructeur. Je suggère de changer votre code comme suit:Pour obtenir les résultats que vous voulez.
Fondamentalement, n'utilisez pas le
setDropDownViewResource
méthode. Ou, si vous le faites, et que vous modifiez l'id de la ressource liaisons, vous aurez à appelerSimpleCursorAdapter#changeCursorAndColumns
; cependant, c'est probablement excessif pour la simple raison que vous essayez d'atteindre.OriginalL'auteur Rich Schuler
TRÈS IMPORTANT! J'ai presque arraché mes cheveux à essayer de comprendre pourquoi mon code ne fonctionne pas. Pour ceux de vous qui peut être la lecture de votre code ne fonctionne toujours pas, assurez-vous que int [] = new int[] {android.R.id.texte1} si vous utilisez le android d'autres mises en page (comme android.R.de mise en page.simple_spinner_dropdown_item). Le code ne fonctionnera pas si le tableau d'entiers textview est pas contenue dans le modèle spécifique que vous utilisez. Lors du débogage de mon code, j'ai changé beaucoup de choses autour et j'ai oublié de faire en sorte que ces appariés. DONC, si vous définissez votre propre mise en page, assurez-vous que vous utilisez un textview à partir de cette mise en page.
OriginalL'auteur Diogenese
Qberticus,
Oui, vous avez raison au sujet de l'ID de ressource de liaison!!
Cependant, si j'ai commencé avec android.R.de mise en page.simple_spinner_dropdown_item, évidemment, la liste déroulante mise en page de spectacle, mais il n'est pas assez 🙂
le texte d'alt http://www.freeimagehosting.net/uploads/c2647bd57d.gif
Mais maintenant, Si j'ai commencé avec simple_spinner_item d'abord, puis
setDropDownViewResource
à simple_spinner_dropdown élément, il affiche maintenant exactement ce que je cherche.Je vous remercie beaucoup pour votre aide.
OriginalL'auteur user370640