2015-01-23 3 views
2

Я пытаюсь заполнить счетчик, используя элементы из пользовательского класса, созданного с помощью простого адаптера, содержащего HashMap. Мое приложение продолжает сбой, когда я использую setSimpleAdapter(), поэтому я прокомментировал это. Но когда я использую spinner1.setAdapter(dataAdapter), он не показывает элементов на счетчике. Вот мой код:Заполнение Spinner с помощью HashMap?

Это в моем onCreate():

spinner1 = (Spinner) findViewById(R.id.spinner1); 

     ArrayAdapter <CharSequence> dataAdapter = 
       new ArrayAdapter <CharSequence> (this, android.R.layout.simple_spinner_item); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     spinner1.setAdapter(dataAdapter); 

     //setSimpleAdapter(); 

     // Spinner item selection Listener 
     addListenerOnSpinnerItemSelection(); 

     // Button click Listener 
     addListenerOnButton(); 

// Add spinner data 
public void addListenerOnSpinnerItemSelection(){ 

    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 
} 

//get the selected dropdown list value 
public void addListenerOnButton() { 

    spinner1 = (Spinner) findViewById(R.id.spinner1); 

    btnSubmit = (Button) findViewById(R.id.btnSubmit); 

    btnSubmit.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      final AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); 
      alertDialog.setTitle("X"); 
      alertDialog.setMessage("" + String.valueOf(spinner1.getSelectedItem())); 
      alertDialog.setButton("Close", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        //Dismisses alert 
        alertDialog.dismiss(); 
       } 
      }); 

      alertDialog.show(); 

     } 

    }); 

} 

Может кто-нибудь мне точку в правильном направлении? Я вот уже целый час собираюсь поработать. Любая помощь будет оценена.

+0

** ReferThis: ** http://stackoverflow.com/questions/24712540/set-key-and-value-in-spinner/37046661#37046661 –

ответ

2

Ну вы не отправляли половину достаточно коды, но говорите, что у вас есть HashMap<String, Object>, то вы бы хотите сделать что-то вроде этого, передавая массив значений в конструктор:

Collection<Object> vals = hashMap.values(); 
Object[] array = vals.toArray(new Object[vals.size()]); 
ArrayAdapter<CharSequence> dataAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, array); 

Просто замените Object с независимо от вашего пользовательского класса и убедитесь, что вы переопределили toString(), чтобы определить, что должно отображаться в виде текста.

+0

Получил работу, спасибо! – iHateAndroidDev

Смежные вопросы