2012-06-25 28 views
7

Tôi đã một Spinner với interation onItemSelected mà làm việc, nhưng làm thế nào các đặc điểm kỹ thuật Api nói:Android: Spinner mục trên nhấp chuột does't làm việc nếu nó đã được chọn

This callback is invoked only when the newly selected position is different from the 
previously selected position or if there was no selected item. 

tôi cần phải loại bỏ hạn chế này và tôi muốn gọi lại cũng được gọi nếu người dùng chọn cùng một phần tử. Làm thế nào để làm điều đó?
Bất kỳ ai cũng làm như vậy?

Bất kỳ ý tưởng về vấn đề này sẽ là đáng ..

+0

thử với setOnItemClickListener –

+0

Tôi cũng đang tìm kiếm tương tự .... – Sri

+0

Bản sao có thể có của [Làm cách nào tôi có thể nhận được sự kiện trong Android Spinner khi mục được chọn hiện tại được chọn lại?] (Http://stackoverflow.com/ câu hỏi/5335306/how-can-i-get-an-ev ent-in-android-spinner-khi-the-current-selected-item-is-sele) – stefan222

Trả lời

1

i want that the callback is invoked also if the user select the same element. How to do that?

Thiết lập OnItemClickListener cho một Spinner sẽ ném một ngoại lệ và sử dụng ItemSelectedListener bạn sẽ không được thông báo nếu nhấp chuột người dùng trên cùng một thành phần được chọn/.

Tôi cho rằng cách duy nhất để vượt qua giới hạn này là sử dụng CustomAdapter cho các mục Spinner và triển khai setOnClickListener cho mỗi chế độ xem trong bộ điều hợp.

+0

cảm ơn vì đã trả lời arun..sẽ thử .. – Hulk

1

Tôi đã gặp vấn đề tương tự này và nhìn xung quanh một chút. Có thể có nhiều cách để chức năng này hoạt động nhưng mở rộng spinner đã hoạt động đối với tôi. Bạn có thể làm một cái gì đó tương tự như những gì tôi tìm thấy here.

Vì vậy, thay vì sử dụng trình xoay vòng Android mặc định, hãy mở rộng và thêm một số mã vào đó sẽ kích hoạt phương thức gọi lại của bạn.

Tôi muốn nói thêm rằng việc sử dụng các setOnItemClickListener trên Spinner sẽ ném một ngoại lệ như đã nêu trong tài liệu:

A spinner does not support item click events. Calling this method will raise an exception. 
0

Trong trường hợp này, bạn phải thực hiện một spinner tùy chỉnh: Hãy thử điều này

public class MySpinner extends Spinner{ 

OnItemSelectedListener listener; 

public MySpinner(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

@Override 
public void setSelection(int position) 
{ 
    super.setSelection(position); 

    if (position == getSelectedItemPosition()) 
    { 
     listener.onItemSelected(null, null, position, 0); 
    }  
} 

public void setOnItemSelectedListener(OnItemSelectedListener listener) 
{ 
    this.listener = listener; 
} 
} 
Các vấn đề liên quan