2012-04-12 25 views
8

Tôi đang cố gắng tạo lại logic ListView (và AbsListView), với chế độ xem tái chế. Tôi cần điều này nhưng chúng tôi có thể nói rằng nó chỉ để hiểu logic Android.Chỉ có trẻ em chuyển tiếp và không phải tất cả các cây

Giả sử các mục con của tôi giống nhau (cùng một bố cục), sử dụng chiều cao cố định RelativeLayout.

Trong khi cuộn, tôi đang sử dụng lại chế độ xem con ma và đặt thuộc tính cho mục hiện tại. Tính năng này hoạt động tốt vì tôi đang sử dụng View.offsetTopAndBottom()invalidate() thay vì yêu cầu bố cục trong khi cuộn để tối ưu hóa.

Sự cố của tôi đang cập nhật trẻ em (RelativeLayout).

Phụ thuộc mục, tôi muốn ẩn hoặc hiển thị ImageView trên mặt hàng này. Đối với điều đó, tôi chỉ sử dụng iconImage.setVisibility(GONE)iconImage.setVisibility(VISIBLE).

Vì tôi đang chặn requestLayout, có vẻ như setVisibility() không hoạt động bình thường.

Nếu tôi sử dụng requestLayout, tất cả các cây sẽ đo và bố cục chính nó và đó không phải là cách tốt để trải nghiệm người dùng cuộn.

Có cách nào để chỉ yêu cầu bố cục trên mục con tái chế không?

Trả lời

-2

Bạn cần phải thông báo cho ListView của bạn với thay đổi của xem để gọi notifyDataSetChanged(); từ Uithread như thế này:

 final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter()); 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      adapter.notifyDataSetChanged(); 
     } 
    }); 
Các vấn đề liên quan