2016-10-05 3 views
2

Я загружаю список из JSON из базы данных. Я установил адаптер, используя этот список, и добавлю его в свой Spinner. Когда я нажимаю на spinner, я вижу список добавленных элементов. Когда я нажимаю на один из этих элементов, я получаю Toast со значением, но не отображается после закрытия счетчика.Spinner не отображает выбранный элемент Android

Я использую setSelection на моем Spinner, но, похоже, не выполняет эту работу.

Благодарим за помощь, как всегда.

Array адаптер адаптер;

 adapter = new ArrayAdapter<String>(getApplicationContext(), 
       android.R.layout.simple_spinner_item, brands); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     marca.setAdapter(adapter); 

     marca.post(new Runnable() { 
      @Override 
      public void run() { 
       marca.setSelection(0, false); 
      } 
     }); 

     marca.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
     { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id) { 
       // TODO Auto-generated method stub 
       marca.setSelection(position); 
       marcaMandar = brands.get(position); 
       Toast.makeText(getBaseContext(), marcaMandar, Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 

     }); 
+1

Что отображается? –

+0

Вот как это выглядит https://photos.google.com/share/AF1QipNHXQtUOo4KmRIuCEs20DEj8w1a8S5_0MD-D4u7T7njwcnBNceU1xb-GOthlRnnPA?key=VDJSYmgzbHJCMXFyb3lrUHJsNGdQaVM0aVQ2TlBn https://photos.google.com/share/AF1QipMtM2Ef_Xzj82D1n_ZmyFZIvMqrDfqOOk9egVkdYlBGiYtVGscorcE6gRgcRFshpQ?key=QVF6NHV2QmI0elJNM3ZVRWkyOE55Q1ZHREpPTzBn HTTPS :? //photos.google.com/share/AF1QipPDmDZOLsd9N8Kq3vljGX6s58C8noadKnH3isvZ6KcpYzPdq6zck2L6elPv8wMi8Q ключ = WE5CTVk2eDBEVTN5MFRzLWVxRE54Qlljamc2M2Rn Спасибо за вашу помощь. –

+0

В этих скриншотах marca Abarth отображается в spinner после выбора. Я не понимаю вашу проблему .. Вам не нужно устанавливатьSelection вручную. Производится автоматически. –

ответ

0

Вы должны добавить

adapter.notifyDataSetChanged(); 

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

Как уже упоминалось в ссылке Андроида:

notifyDataSetChanged()

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

+0

Это изменения, которые я сделал, все еще не работаю, но спасибо за ответ. ArrayAdapter адаптер; адаптер = новый ArrayAdapter (getApplicationContext(), android.R.layout.simple_spinner_item, modelos); adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); adapter.notifyDataSetChanged(); modelo.setAdapter (адаптер); –

0

Я смог заставить его работать после большого количества проб и ошибок. Похоже, что тип макета по умолчанию должен быть изменен, и это заставило его работать. Большое спасибо всем, кто ответил.

ArrayAdapter<String> adapter; 
    adapter = new ArrayAdapter<String>(Preferencias.this, android.R.layout.simple_list_item_1, brands); 
    adapter.notifyDataSetChanged(); 
    marca.setAdapter(adapter); 
Смежные вопросы