J'ai implémenté spinner en remplissant la liste de tableaux par le biais de la base de données. Je peux obtenir et afficher la liste de tableaux dans mon adaptateur de tableau spinner, mais si je sélectionne l'élément dans spinner, il ne s'affiche pas dans spinner?
Voici mon code,
Spinner spinner1 = (Spinner) findViewById(R.id.prospin);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,Android.R.layout.simple_spinner_item, providerlist);
adapter1.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
J'obtiens la chaîne d'élément sélectionnée en utilisant ceci,
Spinner provid = (Spinner)findViewById(R.id.prospin);
String provider =provid.getSelectedItem().toString();
Quelqu'un peut-il m'aider à pls !!!
Cette réponse est peut-être un peu stupide, mais essayez. Cela a fonctionné pour moi.
J'ai eu le même problème et résolu en ajoutant notifyDataSetChanged()
après la liaison des données dans Spinner.
Tout d'abord, j'ai l'adaptateur de liaison avec Blank ArrayList
, puis une liste d'éléments du serveur est ajoutée à cette liste, mais j'ai oublié de notifyDataSetChanged()
après la mise à jour de la liste.
ajoutez simplement adapter.notifyDataSetChanged();
après la mise à jour de la liste.
J'espère que ça vous sera utile.
Spinner n'affiche ni la valeur par défaut ni la valeur de l'élément sélectionné. Mais les éléments du menu déroulant sont affichés lorsqu'ils sont sélectionnés.
La couleur du fond et du texte étant blanche !!!
Rédigez une mise en page personnalisée pour un élément essentiel et utilisez-la à la place de la valeur par défaut, Android.R.layout.simple_spinner_item
.
Comment changer la taille du texte et sa couleur?
your_spinner_instance.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
((TextView) view).setTextColor(Color.RED);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
Android a besoin d'une mise à jour majeure ou peut-être que Dart et Flutter devraient prendre le relais ...
Merci Catluc
Utilisez wrap_content
pour la hauteur de Spinner
.
Il n’a probablement pas assez de hauteur pour afficher du texte.
si vous avez un adaptateur personnalisé, vous devez changer la couleur du texte TextView
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setTextColor(Color.parseColor("#000000"));
return view;
}
et si vous n'avez pas d'adaptateur personnalisé, vous devriez simplement changer l'arrière-plan de Spinner
Cela arrive aussi si le contexte n’est pas correctement défini. J'utilisais getApplicationContext()
où il a besoin de getBaseContext()
.
Essaye ça.
final ArrayList<String> providerlist= new ArrayList<String>();
Spinner spinner1 = (Spinner) findViewById(R.id.prospin);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,Android.R.layout.simple_spinner_item, providerlist);
adapter1.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
String item = providerlist.get(position);
// Showing selected spinner item
Toast.makeText(this,
"Selected Country : " + item, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
En général, les spinners sont sélectionnés par défaut lorsqu'ils sont utilisés. Essayez donc de définir les blancs ou toute autre donnée sur la première position correspondant à la position zéro, vous obtiendrez la position exacte de l'élément sélectionné.
Cette réponse est peut-être un peu stupide, mais si vous faites la même erreur, essayez d'abord de définir vos valeurs sur votre ArrayList, puis d'affecter celui-ci à spinner . et ensuite ajouter des valeurs d'une autre méthode ... à ce moment-là, j'ai rencontré le même problème. Sinon, vous pouvez envoyer notifyDataSetChanged () à votre tableauListe.
utilisez l'attribut Android:spinnerMode="dropdown"
dans l'élément xml de votre élément Spinner
déclaré
Vérifiez ces liens:
Sinon, essayez de le stocker en sélectionnant l'article:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapter, View v,
int position, long id) {
// On selecting a spinner item
String item = adapter.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(getApplicationContext(),
"Selected Country : " + item, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
essayez ce code ==>
ArrayAdapter<String> stateNameAdaptor = new ArrayAdapter<String>(this,Android.R.layout.simple_list_item_1, stateNameList);
stateNameAdaptor.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spnState.setAdapter(stateNameAdaptor);
Wierd. J'ai eu le même problème. Ce que j'ai fait pour que cela fonctionne: 1. Ajoutez quelques données initiales à la liste (par exemple, sélectionnez - -). Chargez le reste des données et ajoutez-les à la liste 3. Appelez adapter.notifyDatasetChaged ()
Le problème de ce que j’ai trouvé était avec la feuille de style.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowNoTitle">false</item>
<item name="windowActionBar">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Pour la mise en page XML, utilisez ceci
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:fitsSystemWindows="true"
Android:paddingBottom="5dp"
style="@style/AppTheme">
<LinearLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingTop="5dp"
Android:paddingLeft="24dp"
Android:paddingRight="24dp">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Spinner"
Android:layout_marginTop="10dp"
Android:textColor="@color/colorBlack"/>
<Spinner
Android:id="@+id/Spinner"
Android:layout_width="fill_parent"
Android:layout_height="50dp"
Android:backgroundTint="@color/colorPrimary"
Android:textColorHint="#05ab9a"
Android:padding="15dp"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
tools:targetApi="Lollipop" />
</LinearLayout>
</ScrollView>
Et enfin pour la classe
String [] NUMBERS= {"3 ","6 ","13 "};
Spinner s_spinner = (Spinner) findViewById(R.id.Spinner);
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this,
Android.R.layout.simple_dropdown_item_1line, NUMBERS);
// Specify the layout to use when the list of choices appears
spinnerAdapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
s_spinner.setAdapter(spinnerAdapter );
Pour moi, le problème est que j'utilise getApplicationContext()
. Quand je change pour this
cela fonctionne bien.
ArrayAdapter<*> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_spinner_item, documentsCategories);
Vous devriez utiliser le premier Spinner pour obtenir les valeurs.
Essayez le code suivant:
String provider = spinner1.getSelectedItem().toString();
Ce que vous faites, c'est obtenir la valeur par défaut du compteur.