如何像android中没有微调器的微调器一样弹出列表?

如何像android中没有微调器的微调器一样弹出列表?,android,listview,popup,spinner,Android,Listview,Popup,Spinner,我的活动中有一个微调器小部件,它允许用户选择列表名 通常,微调器的功能是在列表之间切换,但对于几个实例,我交换了选择更改侦听器,以使用相同的选项列表执行不同的功能。一旦做出选择,旧的听众就会恢复,生活就会继续 这是一个糟糕的安排。相反,我希望有一个函数,它只接受一个选择侦听器和一些其他参数,并显示一个弹出列表,该列表由与微调器相同的光标(或相同的光标)填充,而不使用微调器本身 有什么方法可以做到这一点吗?使用AlertDialog.Builder并通过setAdapter()提供一个适配器来生成

我的活动中有一个微调器小部件,它允许用户选择列表名

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

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


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

使用
AlertDialog.Builder
并通过
setAdapter()
提供一个
适配器来生成您的行


在您的情况下,我不会使用相同的
光标
,因为
光标
具有当前行的固有概念,因此在
SpinnerAdapter
使用
光标时弄乱它可能会使
微调器
出错。使用相同的
光标

这是使用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();

如果您不受API级别11的限制,那么它接近您想要的

您可能想使用

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

参见示例

我不知道AlertDialog.Builder有这个功能。谢谢你的提示。如果我能找到答案,我会接受你的答案。太棒了!这正是我需要的。这应该在答案中更受欢迎。