Отображение данных в Spinner, Android - PullRequest
0 голосов
/ 20 декабря 2011

Я хотел отобразить мои данные в Android Spinner из базы данных.

Я использовал два счетчика. 2-й счетчик должен отражать, как только выбран 1-й элемент вращения, все работает нормально .. данные загружаются во второй счетчик, но не отображаются во 2-ом счетчике, когда выбран элемент 2-го счетчика,

Spinner1 = (Spinner)findViewById(R.id.createProfileCitySpinnerId);
Spinner2 = (Spinner)findViewById(R.id.createProfileStateSpinnerId);

//for 1st spinner.....(working)
final List<String> list1 = new ArrayList<String>();

ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, 
                 android.R.layout.simple_spinner_item,list1);
Spinner1.setAdapter(adapter1);

//for second spinner...
final List<String> list2 = new ArrayList<String>();
Spinner1.setOnItemSelectedListener(new OnItemSelectedListener(){

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
    {
         if(//some condition using id)
         {                     
            list2.add(stateCursor.getString(1));                                
         }
   }    
   @Override
   public void onNothingSelected(AdapterView<?> parent)
   {                    
   }    
});

//everything is working data is loading, but not display once item is selected on 2nd spinner
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list2);
stateSpinner.setAdapter(adapter2);

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Вам необходимо добавить элемент непосредственно в адаптер (не в list2), ArrayAdapter хранит свои собственные внутренние данные. Попробуйте этот код на свой OnItemSelected:

adapter2.add(stateCursor.getString(1));
adapter2.notifyDataSetChanged();
1 голос
/ 20 декабря 2011

Позвоните adapter2.notifyDataSetChanged();

, например

@Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
    {
         if(//some condition using id)
         {                     
            list2.add(stateCursor.getString(1));
            adapter2.notifyDataSetChanged();                               
         }
   } 

, см. http://developer.android.com/reference/android/widget/ArrayAdapter.html для получения дополнительной информации.

public void notifyDataSetChanged () Since: API Level 1

Уведомляет прикрепленных наблюдателей о том, что базовые данные были изменены, и любое представление, отражающее набор данных, должно само обновиться.

...