Вопрос

У меня есть прядильник с пользовательским адаптером, отображающим объекты из базы данных. Когда список объектов изменился, я создаю новый адаптер со списком и примените его на спиннере.После этого выбран первый товар, поэтому я попробовал это:

// 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()
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top