如何在android中弹出没有微调器的微调器列表?

时间:2010-01-25 01:01:03

标签: android listview popup spinner

我的活动中有一个微调器窗口小部件,用户可以选择列表名称。

通常,微调器的功能是在列表之间切换,但对于几个实例,我换出选择更改侦听器以使用相同的选项列表执行不同的功能。一旦做出选择,旧的听众就会恢复并继续生活。

这是一个糟糕的错误安排。相反,我希望有一个函数只需要一个选择监听器和一些其他参数,并显示一个弹出列表,该列表由与微调器相同的光标(或相同的光标)填充,而不使用微调器本身。

我有什么方法可以做到这一点吗?

5 个答案:

答案 0 :(得分:10)

这是使用AlertDialog和AlertDialog.Builder的spinner等弹出细节的最佳示例

        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();

答案 1 :(得分:9)

使用AlertDialog.Builder并通过生成行的Adapter提供setAdapter()

在您的情况下,我不会使用相同的Cursor,因为Cursor具有当前行的固有概念,因此当Cursor使用它时会弄乱SpinnerAdapter您的Spinner可以搞砸Cursor。使用相同的{{1}}。

答案 2 :(得分:3)

如果您不受API级别11的限制,则listPopupWindow接近您想要的。

答案 3 :(得分:1)

            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();

答案 4 :(得分:1)

您可能想要使用PopupMenu

请参阅this示例