Как динамически обновить спиннер?
-
12-11-2019 - |
Вопрос
У меня есть прядильник с пользовательским адаптером, отображающим объекты из базы данных. Когда список объектов изменился, я создаю новый адаптер со списком и примените его на спиннере.После этого выбран первый товар, поэтому я попробовал это:
// 5th item selected
int pos = spinner.getSelectedItemPosition();
spinner.setAdapter(newAdapter);
// 0th item selected
spinner.setSelectedItem(pos);
// 5th item is selected
.
Но графический интерфейс все еще показывает первый элемент?
Генеракодицетагкод не помог.
Это правильный способ достичь того, что я хочу?Я действительно не мог найти никакой информации об этом поведении.
Решение
Решено: Я думаю, что главная проблема была адаптер Custom Spinner.Это работает нормально сейчас
if (spinner.getCount() > 0) {
pos = spinner.getSelectedItemPosition();
}
MySpinnerAdapter adapter = new MySpinnerAdapter(context, myNewObjects);
spinner.setAdapter(adapter);
spinner.setSelection(pos); // needed
adapter.notifyDataSetChanged();
. Другие советы
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
spinner.setSelectedItem(5);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
. Вы пробовали Renacodicetacode или генеракодицетагкод метода адаптера.
newAdapter.notifydatasetChanged()
. Не связан с StackOverflow