2016-05-17 11 views
10

Khi câu hỏi cho biết, làm cách nào để ràng buộc trình nghe thay đổi đã chọn thành nút Chuyển đổi trong xml?Làm cách nào chúng tôi có thể triển khai ràng buộc dữ liệu cho nút Chuyển đổi cho sự kiện onCheckedChageListener?

Tôi không sử dụng chế độ xem của người tái chế. Chỉ là một cách bố trí đơn giản.

Bất kỳ trợ giúp nào được đánh giá cao.

+0

Có gì sai với thiết lập nó tự động? –

+0

Chúng ta có thể sử dụng cùng một mô hình khung nhìn khác trong dự án với các trường quan sát được bằng cách sử dụng bộ đệm đĩa không? –

Trả lời

4

Bạn có thể làm điều đó với một tài liệu tham khảo phương pháp:

<CheckBox android:onCheckedChanged="@{callback::checkedChangedListener}".../> 

hoặc với một biểu thức lambda nếu bạn muốn vượt qua các thông số khác nhau:

<CheckBox android:onCheckedChanged="@{() -> callback.checked()}".../> 
+6

Điều này không hoạt động đối với tôi tôi nhận được 'Thuộc tính không xác định android: onCheckedChanged' –

+0

@TiagoOliveira mặc dù tôi cũng nhận được cảnh báo đó, sau khi khởi chạy ứng dụng có vẻ như hoạt động thực sự – arekolek

+0

@GeorgeMount lý do tại sao chúng tôi không thể sử dụng ứng dụng: onCheckedChangeListener phương thức gọi setOnCheckedChangeListener trong CheckBox? – David

13

Sử dụng biểu thức lambda và Switch:

public void onCheckedChanged(boolean checked) { 
    // implementation  
} 

Tệp XML:

<android.support.v7.widget.SwitchCompat 
    android:onCheckedChanged="@{(switch, checked) -> item.onCheckedChanged(checked)}" 
    ... 
/> 

đâu item là lớp mà thực hiện onCheckedChange phương pháp và được nhập khẩu vào file XML như thế này:

<data> 
    <variable 
     name="item" 
     type="yourClass"/> 
</data> 
+0

Chúng ta có thể tạo một liên kết 2 chiều tùy chỉnh để giảm bớt sự sắp xếp bản đồ –

+0

@AdityaLadwa có gì sai khi sử dụng thuộc tính 'checked' không? bạn có thể ràng buộc điều đó khá dễ dàng –

Các vấn đề liên quan