2012-09-26 25 views
5

Trong Android, người dùng có thể sử dụng/triển khai người nghe kích hoạt gọi lại khi số lượng trẻ em cho Chế độ xem cụ thể thay đổi động không? Ví dụ: Chế độ xem có 3 trẻ em ngay lập tức và một bị xóa thông qua mã, tôi cần một sự kiện để kích hoạt để nói rằng số lượng trẻ em ngay lập tức đã thay đổi.Android - Trình nghe/Gọi lại khi số lượng Xem trẻ em thay đổi

Để làm rõ, tôi không cần phải thực hiện thao tác lướt ngang trên cây Xem để đếm trẻ em, tôi chỉ quan tâm đến việc đếm số lượng trẻ em ở lớp đầu tiên của Chế độ xem đã cho.

Rất cám ơn

Trả lời

17

Tôi tin rằng bạn muốn sử dụng OnHierarchyChangeListener: định nghĩa giao diện

cho một callback được gọi khi hệ thống cấp bậc trong quan điểm này đã thay đổi. Cấu trúc phân cấp thay đổi bất cứ khi nào một đứa trẻ được thêm vào hoặc bị xóa khỏi chế độ xem này.

Nó có hai callbacks:

+0

Đó là tuyệt vời và chỉ là những gì tôi đang tìm kiếm! Rất cám ơn – ComethTheNerd

+0

Vui vì tôi có thể giúp đỡ. – Sam

+0

nhưng đó là câu hỏi thực sự được +1. Tôi không biết điều này đã có sẵn. Vì vậy, đã viết một cái gì đó cho riêng tôi nếu tôi phải đối mặt với yêu cầu đó. :) – Javanator

1

Cách đơn giản để đánh lừa.

  1. Chỉ cần kéo dài nhóm xem Thêm phương thức Xem và ghi đè loại bỏ và tùy chọn phương thức addView của bạn.

  2. Cung cấp giao diện gọi lại của bạn Thực hiện theo bất kỳ phương thức nào của lớp học ViewGroup của bạn để đặt người nghe. Gọi cho đại biểu của mình từ trong phương thức thêm bị ghi đè và phương thức addView. Làm cho giao diện gọi lại của bạn ủy quyền để nhận kích thước hiện tại.

Something như thế này

public class MyViewGroup extends LinearLayout { 

    // provide constructor implmentation to justify super constructor requirement 

    private OnSizeChangeListener callback; 

    public void setOnSizeChangeListener(OnSizeChangeListener callback) { 
    this.callback = callback; 
    } 

    @Override 
    public void remove(View view) { 
    super.remove(view); 
    if(callback != null) { 
     callback.sizeChanged(getChildCount); 
    } 
    } 
} 
+0

Đây là một gợi ý thực sự gọn gàng mà tôi nghĩ rằng sẽ được hoàn hảo để theo dõi trạng thái cao cấp hơn. Trong trường hợp này, tuy nhiên Ill sử dụng trình lắng nghe phân cấp được đề xuất vì nó có vẻ là một giải pháp đã sẵn sàng. Cảm ơn sự giúp đỡ của bạn mặc dù – ComethTheNerd

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