Ich habe den Spinner implementiert, indem ich die Array-Liste über die Datenbank ausgefüllt habe. Ich kann die Array-Liste in meinem Spinner-Array-Adapter abrufen und anzeigen, aber wenn ich das Element im Spinner auswähle, wird es nicht im Spinner angezeigt. Was hatte ich hier falsch?
Hier ist mein 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);
Ich bekomme die ausgewählte Elementzeichenfolge,
Spinner provid = (Spinner)findViewById(R.id.prospin);
String provider =provid.getSelectedItem().toString();
Kann mir jemand helfen, pls !!!
Diese Antwort ist vielleicht etwas dumm, aber probieren Sie es aus. Es hat für mich funktioniert.
Ich habe das gleiche Problem bekommen und durch das Hinzufügen von notifyDataSetChanged()
nach dem Binden von Daten in Spinner gelöst.
Zuerst habe ich einen Bindungsadapter mit Blank ArrayList
und dann eine Liste der Elemente vom Server abgerufen und dieser Liste hinzugefügt, aber nach der aktualisierten Liste notifyDataSetChanged()
vergessen.
füge einfach adapter.notifyDataSetChanged();
nach der Aktualisierung der Liste hinzu.
Hoffe es wird hilfreich sein.
Der Spinner zeigt weder den Standardwert noch den ausgewählten Elementwert an. Dropdown-Menüelemente werden jedoch angezeigt, wenn sie ausgewählt werden.
Hintergrund und Textfarbe sind beide weiß !!!
Schreiben Sie ein benutzerdefiniertes Layout für ein Spiner-Element und verwenden Sie es anstelle des Standardwerts Android.R.layout.simple_spinner_item
.
Wie kann ich die Größe und Textfarbe des Spinners ändern?
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 braucht ein größeres Update oder vielleicht sollten Dart und Flatter die Leitung übernehmen ...
Danke Catluc
Verwenden Sie wrap_content
für die Höhe von Spinner
.
Wahrscheinlich hat es nicht genug Höhe, um Text anzuzeigen.
wenn Sie einen benutzerdefinierten Adapter haben, sollten Sie die TextView-Textfarbe ändern
@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;
}
wenn Sie keinen benutzerdefinierten Adapter haben, sollten Sie einfach den Spinner-Hintergrund ändern
Nun, das passiert auch, wenn der Kontext nicht richtig angegeben ist. Ich verwendete getApplicationContext()
wo es getBaseContext()
braucht.
Versuche dies.
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) {
}
});
Im Allgemeinen werden Spinner standardmäßig ausgewählt, wenn sie verwendet werden. Versuchen Sie daher, Leerstellen oder andere Daten auf die erste Position zu setzen, bei der es sich um eine Nullposition handelt. Sie erhalten die genaue Position des ausgewählten Elements.
Diese Antwort mag ein bisschen dumm sein, aber wenn Sie den gleichen Fehler begehen, versuchen Sie es mit ... Setzen Sie zuerst Werte in Ihre ArrayList und weisen Sie diese ArrayList dann dem Spinner zu . Ich habe eine globale ArrayList deklariert und zuerst auf Spinner gesetzt und addiere dann Werte von einer anderen Methode ... damals stand ich vor demselben Problem. Ansonsten können Sie notifyDataSetChanged () für Ihre arrayList angeben.
verwenden Sie das Android:spinnerMode="dropdown"
-Attribut im xml des angegebenen Spinner
-Elements.
Überprüfen Sie diese Links:
Andernfalls speichern Sie es bei der Auswahl des Elements:
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
}
});
versuchen Sie diesen 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);
Seltsam. Ich hatte das gleiche Problem. Was ich getan habe, damit es funktioniert: 1. Fügen Sie der Liste einige Anfangsdaten hinzu (zB - wählen Sie bitte - -) 2. Laden Sie die restlichen Daten und fügen Sie sie der Liste hinzu 3. Rufen Sie adapter.notifyDatasetChaged () auf.
Das Problem von dem, was ich gefunden habe, war mit dem Stylesheet
<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>
Verwenden Sie dies für das XML-Layout
<?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>
Und zum Schluss noch für die Klasse
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 );
Ich hatte gerade dieses Problem und nachdem ich alle aufgeführten Lösungen ausprobiert hatte, stellte ich fest, dass das Problem darin bestand, dass ich den Drehregler layout_width
Auf 60dp eingestellt hatte.
Es wurde in fill_parent geändert und das Problem wurde behoben.
Für mich ist das Problem, dass ich getApplicationContext()
verwende. Wenn ich zu this
wechsle, funktioniert es einwandfrei.
ArrayAdapter<*> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_spinner_item, documentsCategories);
Sie sollten den ersten Spinner verwenden, um die Werte zu erhalten.
Versuchen Sie den folgenden Code:
String provider = spinner1.getSelectedItem().toString();
Sie erhalten den Standardwert des Spinners.