Как всплывающий список, как счетчик без счетчика в Android? - PullRequest
6 голосов
/ 25 января 2010

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

Обычно функция счетчика заключается в переключении между списками, но для пары случаев я меняю слушателя изменения выбора, чтобы выполнить другую функцию с тем же списком параметров. После того, как выбор сделан, старый слушатель восстанавливается и жизнь продолжается.

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

Есть ли способ, которым я могу это сделать?

Ответы [ 5 ]

10 голосов
/ 03 октября 2011

Это лучший пример для всплывающих подробностей, таких как вращение, используя AlertDialog и AlertDialog.Builder

        AlertDialog dialog;

         final CharSequence[] items = { "Item1", "Item2" };
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(title);
        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int pos) {
            switch (pos) {
                case 0:
                              {
        Toast.makeText(this,"Clicked on:"+items[pos],Toast.LENGTH_SHORT).show();

                      }break;
            case 1:
                              {
        Toast.makeText(this,"Clicked on:"+items[pos],Toast.LENGTH_SHORT).show();

                      }break;
        }
    }});
dialog=builder.create();
dialog.show();
9 голосов
/ 25 января 2010

Используйте AlertDialog.Builder и укажите Adapter через setAdapter(), который генерирует ваши строки.

В вашем случае, я бы не использовал тот же Cursor, так как Cursor имеет внутреннее представление о текущей строке, и поэтому возиться с Cursor, пока он используется вашим SpinnerAdapter, может винт до Spinner. Идти с идентичным Cursor.

3 голосов
/ 22 марта 2012

Если вы не ограничены уровнем API 11, тогда listPopupWindow близко к тому, что вы хотите.

1 голос
/ 15 января 2014

Возможно, вы захотите использовать PopupMenu

см. этот пример

1 голос
/ 28 мая 2013
            CharSequence[] items = {"Mangoes", "Bananas", "Grapes"};

            new AlertDialog.Builder(getActivity())
            .setTitle("Action")
            .setItems(items, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int item) {

                    if(item==0){
                      // Mangoes selected
                    }
                    else if(item==1){
                      // Bananas selected
                    }
                    else if(item==2){
                      // Grapes selected
                    }   
                }

            })
            .show();
...