Подтвердить что ты не робот

Диалог пользовательского списка Android

Привет,
Я работаю над простым файловым браузером. У меня есть большая часть этой настройки (где она перечисляет все в разных каталогах, а что нет), но то, что я застрял прямо сейчас (работал над ним в течение нескольких часов), - это когда элемент списка выбран, я хочу появится диалоговое окно настраиваемого списка. Я нашел этот код на странице разработки Android и немного изменил его. В настоящее время он просто дает тост за то, что было выбрано, но мне нужно, чтобы три элемента были отдельными. То есть, я хотел бы сделать больше, чем тост, и каждый выбор запускает разные команды. Вот мой текущий код

    final CharSequence[] items = {"Info", "Rename", "Delete"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Options for " + file.getName());
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }
    }).show();

Спасибо всем, кто может помочь мне просто отделить его. Я пробовал несколько разных вариантов выражений if, и что не все, что я пробовал, не удалось.

4b9b3361

Ответ 1

Целое число, которое вы получаете, является индексом массива charsequence, который содержит ваши действия, поэтому, чтобы получить выбранное действие, вы можете сделать это (внутри вашего метода onClick):

if (item == 0)
{
     // Info item
}
else if (item == 1)
{
     // Rename, and so one

Или вы можете сделать следующее:

if (items[item].equals("Info"))
{
     // Info item
}
else if (items[item].equals("Rename")
{
     // Rename, and so one
}

Но первый предпочтительный метод

Ответ 2

Немного поздно, но это может помочь. Я использую его для заполнения пользовательского списка в диалоговом окне. Я использую курсор, но вы также можете использовать ArrayAdapter или что-то, что вам нравится:

Dialog aDialog = new Dialog(this);
AlertDialog.Builder bDialog = new AlertDialog.Builder(this);

Cursor books = managedQuery(booksprovider.CONTENT_URI_BOOKS, null, null, null, null);
ListView booksToAdd = new ListView(this);
SimpleCursorAdapter books_list = new SimpleCursorAdapter(this, R.layout.shelves_add, books, 
    new String[] { BOOKS_TITLE, BOOKS_AUTHOR },//columns to include in view 
    new int[] { R.id.search_results_title,  R.id.search_results_author } );//views to bind columns to

booksToAdd.setAdapter(books_list); 
bDialog.setView(booksToAdd);

bDialog.setPositiveButton("Add to Shelf", new DialogInterface.OnClickListener() { });
aDialog = bDialog.create();

Ответ 3

  AlertDialog.Builder builder = new AlertDialog.Builder(this);
                String[] name = new String[] {"item1","item2"};
        builder.setItems(name, new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch(which){
                                case 0:
                  //click item 1
           break;
         case 1:
 //click item 2
break;
                                     }

            }
        });
        builder.show();

Ответ 4

и вызовите в этом диалоговом окне, в котором вы хотите открыть один диалог выбора. FragmentManager manager = getFragmentManager();

        /** Instantiating the DialogFragment class */
        AddTimerDialog alert = new AddTimerDialog();
        alert.setPositiveClickListener(this);

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

        /** Storing the selected item index in the bundle object */
        b.putInt("position", position);

        /** 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");

Ответ 5

Я вызываю диалоговое окно в диалоговом окне здесь, это мой код.

Попробуйте следующее:

public class AddTimerDialog extends DialogFragment {

    AlertPositiveListener alertPositiveListener;

    interface AlertPositiveListener {
        public void onPositiveClick(int position);
    }

    public void setPositiveClickListener(
            AlertPositiveListener alertPositiveListener) {
        this.alertPositiveListener = alertPositiveListener;
    }

    OnClickListener positiveListener = new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            AlertDialog alert = (AlertDialog) dialog;
            int position = alert.getListView().getCheckedItemPosition();
            if (alertPositiveListener != null)
                alertPositiveListener.onPositiveClick(position);
        }
    };

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        Bundle bundle = getArguments();
        int position = bundle.getInt("position");

        AlertDialog.Builder b = new AlertDialog.Builder(getActivity());

        b.setSingleChoiceItems(ReminderSnooze.code, position, null);

        b.setPositiveButton("OK", positiveListener);

        AlertDialog d = b.create();

        return d;
       }
    }