2010-01-25 64 views
5

我在我的活動中有一個微調控件,它允許用戶選擇一個列表名稱。如何在android中彈出列表而不需要微調框?

通常,微調器的功能是在列表之間切換,但對於一些實例,我換出選擇更改偵聽器以使用相同的選項列表執行不同的功能。一旦選擇完成,老的聽衆就會恢復,生活就會繼續。

這是一個糟糕的錯誤安排。相反,我想有一個函數只需要一個選擇監聽器和一些其他參數,並顯示一個彈出列表,該列表由同一個遊標(或同一個遊標)填充爲微調器,而不使用微調器本身。

有什麼辦法可以做到這一點?

回答

9

使用AlertDialog.Builder並通過setAdapter()提供一個Adapter來生成您的行。

在你的情況,我也不會使用相同的Cursor,作爲Cursor具有當前行的固有概念,並與Cursor所以搞亂,而它是由您的SpinnerAdapter可能搞砸了Spinner。使用相同的Cursor

+0

我不知道的AlertDialog.Builder有這樣的功能。謝謝你的提示。如果我能解決問題,我會接受你的答案。 – CodeFusionMobile 2010-01-26 06:28:36

10

這是使用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(); 
+0

真棒!正是我需要的。 – Jesse 2012-02-21 15:33:27

3

如果不通過API級別11有限,那麼listPopupWindow接近你想要什麼。

+0

這應該在答案中更受歡迎。 – guness 2017-02-13 22:28:40

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(); 
相關問題