2012-02-25 2 views
3

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

// 5th item selected 
int pos = spinner.getSelectedItemPosition(); 
spinner.setAdapter(newAdapter); 
// 0th item selected 
spinner.setSelectedItem(pos); 
// 5th item is selected 

Но графический интерфейс все еще показывает первый элемент?

spinner.invalidate() не помогло.

Это правильный способ добиться того, чего я хочу? Я действительно не мог найти никакой информации об этом поведении.

+0

Вы попробовали adapter.notifyDataSetChanged(); – Vikram

ответ

1

Решено: Я думаю, главная проблема заключалась в адаптере адаптера. Это прекрасно работает сейчас

if (spinner.getCount() > 0) { 
    pos = spinner.getSelectedItemPosition(); 
} 
MySpinnerAdapter adapter = new MySpinnerAdapter(context, myNewObjects); 
spinner.setAdapter(adapter); 
spinner.setSelection(pos); // needed 
adapter.notifyDataSetChanged(); 
1
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 

     } 
    }); 
+0

Это выглядит грязно и, похоже, не работает. – user376244

+0

hmm грязный ,,, его работы для меня каждый раз и везде в моем коде .. –

0

сделал и попытался notifydatasetChanged() или notifydatasetInvalidate methode адаптера. newAdapter.notifydatasetChanged()

+0

Да, без изменений. – user376244

+0

Можете ли вы показать мне, как создать mAdapter. Я имею в виду mAdapter = новый ArrayAdapter (бла-бла); ?? – Pankaj

+0

Вам не нужно назначать новый адаптер. U Добавить данные в список, который используется в адаптере, и вызвать метод NotifyDataSetChanged(). Новый адаптер. – Pankaj