2010-01-25 41 views
5

Tôi có tiện ích spinner trong hoạt động của mình cho phép người dùng chọn tên danh sách.Làm thế nào để bật lên danh sách như một spinner không có spinner trong android?

Thông thường, chức năng của spinner là chuyển đổi giữa các danh sách nhưng đối với một vài trường hợp, tôi hoán đổi bộ chọn thay đổi lựa chọn để thực hiện một chức năng khác với cùng danh sách tùy chọn. Sau khi lựa chọn đã được thực hiện, người nghe cũ sẽ được khôi phục và cuộc sống tiếp tục.

Đây là sắp xếp không hợp lệ và lỗi. Thay vào đó, tôi muốn có một hàm chỉ cần một trình lắng nghe lựa chọn và một số tham số khác và hiển thị một danh sách bật lên được con trỏ giống như con trỏ (hoặc con trỏ giống hệt), mà không sử dụng chính spinner.

Có cách nào để tôi có thể thực hiện việc này không?

Trả lời

9

Sử dụng AlertDialog.Builder và cung cấp Adapter qua setAdapter() để tạo hàng của bạn.

Trong trường hợp của bạn, tôi sẽ không sử dụng cùng một Cursor, như một Cursor có một khái niệm nội tại của hàng hiện tại, và do đó can thiệp vào Cursor trong khi nó đang được sử dụng bởi bạn SpinnerAdapter thể vít lên Spinner. Đi với Cursor giống hệt nhau.

+0

Tôi không biết một AlertDialog.Builder có chức năng đó. Cảm ơn vì tiền hỗ trợ. Tôi sẽ chấp nhận câu trả lời của bạn nếu tôi làm cho nó hoạt động. – CodeFusionMobile

10

Đây là ví dụ tốt nhất để biết chi tiết cửa sổ bật lên như spinner sử dụng AlertDialog và 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

tuyệt vời! Đúng thứ tôi cần. – Jesse

3

Nếu bạn không bị giới hạn bởi mức API 11 sau đó listPopupWindow gần với những gì bạn muốn.

+0

điều này sẽ phổ biến hơn trong số các câu trả lời. – guness

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(); 
Các vấn đề liên quan