Ich habe 1-50 Datensätze in der Datenbank. Ich rufe diese Daten mit dem Cursor ab und setze diese Werte mit dem Simple Cursor Adapter auf Spinner. Nun, was ich brauche, ist, ich möchte einen Wert festlegen, sagen Sie 39. Wert als Standard. Aber nicht durch seine Position möchte ich durch seinen Wert festlegen.
Ich weiß, wie der Spinner durch seine Position voreingestellt wird
spinner.setSelection(39)
setzt den Spinner auf diesen Wert.
Aber ich hatte keine Ahnung, wie man den Spinner-Standard nach seinem Wert (Text) in der Datenbank setzt. Ich kenne die Werte in der Datenbank. Zum Beispiel ist "Bücher" einer der Werte im Spinner. Ich muss den Spinner-Standard als Bücher festlegen.
Gibt es eine Möglichkeit, dies zu tun?
Schließlich löste ich das Problem auf folgende Weise, in der die Position des Spinners durch seine Schnur ermittelt werden kann
private int getPostiton(String locationid,Cursor cursor)
{
int i;
cursor.moveToFirst();
for(i=0;i< cursor.getCount()-1;i++)
{
String locationVal = cursor.getString(cursor.getColumnIndex(RoadMoveDataBase.LT_LOCATION));
if(locationVal.equals(locationid))
{
position = i+1;
break;
}
else
{
position = 0;
}
cursor.moveToNext();
}
Aufruf der Methode
Spinner location2 = (Spinner)findViewById(R.id.spinner1);
int location2id = getPostiton(cursor.getString(3),cursor);
location2.setSelection(location2id);
Ich hoffe es wird für einige helfen ..
Wenn Sie die Drehfeldwerte mit arraylist
oder array
einstellen, können Sie die Auswahl des Drehfelds über den Index des Werts festlegen.
String myString = "some value"; //the value you want the position for
ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter
int spinnerPosition = myAdap.getPosition(myString);
//set the default according to value
spinner.setSelection(spinnerPosition);
siehe den Link Wie kann ich das ausgewählte Element von Spinner nach Wert und nicht nach Position setzen?
Zeichenfolge mit Wert aus Index vergleichen
private void selectSpinnerValue(Spinner spinner, String myString)
{
int index = 0;
for(int i = 0; i < spinner.getCount(); i++){
if(spinner.getItemAtPosition(i).toString().equals(myString)){
spinner.setSelection(i);
break;
}
}
}
so habe ich es gemacht:
String[] listAges = getResources().getStringArray(R.array.ages);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter =
new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_item, listAges);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP);
spinner_age.setAdapter(dataAdapter);
spinner_age.setSelection(0);
spinner_age.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
if(position > 0){
// get spinner value
Toast.makeText(parent.getContext(), "Age..." + item, Toast.LENGTH_SHORT).show();
}else{
// show toast select gender
Toast.makeText(parent.getContext(), "none" + item, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Sie können es einfach so machen.
String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);