2016-08-23 1 views
2

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

CustomDialog класс, который возвращает диалог к ​​моей деятельности

public class CustomDialog extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     ... 
    AlertDialog.Builder b = new AlertDialog.Builder(); 
    b.setSingleChoiceItems(Language.names, 5, new OnClickListener() { 
     .... 
    } 

    AlertDialog dialog = b.create(); 

    return dialog; 
} 

В деятельности:

FragmentManager manager = getFragmentManager(); 
    CustomDialog alert = new CustomDialog(); 

    // Creating a bundle object to store the selected item's index 
    Bundle b = new Bundle(); 

    // Storing the selected item's index in the bundle object : Get current language 
    // code and set the position 
    b.putInt("position", 5); // sending the 5 

    // Setting the bundle object to the dialog fragment object 
    alert.setArguments(b); 

    // Creating the dialog fragment object, which will in turn open the alert dialog window 
    alert.show(manager, "alert_dialog_radio"); 

Теперь отображает конкретное положение, которое является правильным, но проблема, которую я имею, это прокрутка позиции и сохранение этой позиции в верхней части.

Есть ли способ я могу установить список, который будет отображаться, начиная с позицией 0, но выбранный элемент 5. Таким образом, идея заключается в проходе 5 и показать 5 выбрано, но он должен начать отображение на 0.

ответ

2

Вместо о прохождении индекса выбранного вами элемента в вызове setSingleChoiceItems(), пройдите -1, чтобы указать, что ни один элемент не отмечен, а затем вручную выберите нужный элемент после показа AlertDialog.

public class CustomDialog extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder b = new AlertDialog.Builder(...); 
     ... 

     // We can just pass -1 here, since we'll be 
     // setting the selected item later anyway 

     b.setSingleChoiceItems(Language.names, -1, new OnClickListener() { 
       .... 
      } 
     ); 

     AlertDialog dialog = b.create(); 
     return dialog; 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     // Grab the position from the arguments, 
     // and set that item as checked 

     final int position = getArguments().getInt("position"); 
     final AlertDialog dialog = (AlertDialog) getDialog(); 
     dialog.getListView().setItemChecked(position, true); 
    } 
} 
Смежные вопросы