2012-08-30 15 views
8

Utworzono okno dialogowe z niestandardowym ListView, które modeluje ekran Spinner i początkowo zaczyna się od wartości "Wybierz płeć".Ustaw domyślny wybrany element okna dialogowego Alert listy w Androidzie

Po wyświetleniu okna dialogowego pojawia się monit o wybór (tak jak spinner). Jeśli wybór zostanie ponownie wybrany, wyświetla te same opcje, ale nie wskazuje, która opcja została już wybrana.

Przykład:
Wartość domyślna: "Wybierz Płeć"
Dialog otwiera bez selekcji
użytkownik wybiera: "Małe"
użytkownika wznawia dialog ...
Dialog otwiera bez selekcji

(Chciałbym, aby wybrano "Male", ponieważ był to ich ostatni wybór)

Oto mój kod do tej pory:

genderItems = getResources().getStringArray(R.array.gender_array); 
genderAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, genderItems); 

genderDrop.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getAction() == MotionEvent.ACTION_DOWN) { 
       Builder genderBuilder = new AlertDialog.Builder(Register.this) 
        .setTitle(R.string.gender_prompt) 
        .setAdapter(genderAdapter, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         inputGender.setText(genderItems[which]); 
         dialog.dismiss(); 
        } 
       }); 
       AlertDialog genderAlert = genderBuilder.create(); 
       genderAlert.show(); 
       genderAlert.getListView().setSelection(0); 
      } 
      return false; 
     } 
}); 

genderAlert.getListView().setSelection(0)nie ustawić domyślny wybrany jako „male”
genderAlert.getListView().setSelection(1)nie ustawić domyślny wybrany jako „żeński”

Odpowiedz

19

Zdobione obecnie:

Zmieniłem z .setAdapter na .setSingleChoiceItems, który ma argument dla domyślnego wyboru. Następnie wystarczyło utworzyć zmienną globalną, która została ustawiona za każdym razem, gdy kliknąłem opcję. Zmienna globalna jest początkowo ustawiona na -1, więc żadna opcja nie jest wybrana, a następnie po kliknięciu czegoś zostaje ustawiona do pozycji i przy następnym utworzeniu okna dialogowego wybór odzwierciedla mój poprzedni wybór. Zobacz poniżej:

Integer selection = -1; 

genderItems = getResources().getStringArray(R.array.gender_array); 
genderAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, genderItems); 

genderDrop.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getAction() == MotionEvent.ACTION_DOWN) { 
       Builder genderBuilder = new AlertDialog.Builder(Register.this) 
        .setTitle(R.string.gender_prompt) 
        .setSingleChoiceItems(genderAdapter, selection, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          inputGender.setText(genderItems[which]); 
          selection = which; 
          dialog.cancel(); 
         } 
        }); 
       AlertDialog genderAlert = genderBuilder.create(); 
       genderAlert.show(); 
      } 
      return false; 
     } 
}); 
+0

Co to jest "genderDrop"? – NarendraJi

Powiązane problemy