Как установить Spinner Default по его значению вместо позиции?
У меня есть 1-50 записей в базе данных. Я извлекаю эти данные с помощью курсора и устанавливаю эти значения в Spinner с помощью Simple Cursor Adapter. Теперь мне нужно, чтобы я установил одно значение, скажем, 39-е значение по умолчанию. Но не по своей позиции, которую я хочу установить по ее значению.
Я знаю, как установить значение параметра spinner по его позиции
spinner.setSelection(39)
задает значение счетчика для этого значения.
Но я не имел никакого представления о том, чтобы установить значение параметра spinner по его значению (тексту) в базе данных.
Я знаю значения в базе данных. Например, "книги" являются одним из значений в счетчике. Мне нужно установить значение по умолчанию в качестве книг.
Есть ли способ сделать это?
Ответы
Ответ 1
Наконец, я решил проблему, используя следующий способ, в котором положение счетчика можно получить по его строке
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();
}
Вызов метода
Spinner location2 = (Spinner)findViewById(R.id.spinner1);
int location2id = getPostiton(cursor.getString(3),cursor);
location2.setSelection(location2id);
Я надеюсь, что это поможет кому-то...
Ответ 2
Если вы устанавливаете значения счетчика с помощью arraylist
или array
, вы можете установить выбор счетчика с помощью индекса значения.
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);
см. ссылку Как установить выбранный элемент Spinner по значению, а не по позиции?
Ответ 3
Сравнить строку со значением из индекса
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;
}
}
}
Ответ 4
вот как я это сделал:
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) {
}
});