6

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

通常,微调器的功能是在列表之间切换,但在某些情况下,我换掉了选择更改侦听器以使用相同的选项列表执行不同的功能。一旦做出选择,旧的听众就会恢复,生活还要继续。

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

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

4

5 回答 5

11

这是弹出细节的最佳示例,例如使用 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();
于 2011-10-03T13:53:51.880 回答
9

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

在您的情况下,我不会使用相同的Cursor,因为 aCursor具有当前行的内在概念,因此弄乱Cursor您使用的 whileSpinnerAdapter可能会搞砸Spinner. 使用相同的Cursor.

于 2010-01-25T09:50:35.813 回答
3

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

于 2012-03-22T04:01:30.723 回答
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();
于 2013-05-28T18:19:46.523 回答
1

您可能想使用PopupMenu

这个例子

于 2014-01-15T15:57:44.483 回答