Một ListView giữ cho các hàng của nó được sắp xếp trong danh sách từ trên xuống mà bạn có thể truy cập bằng getChildAt()
. Vì vậy, những gì bạn muốn là khá đơn giản. Chúng ta hãy Views đầu tiên và cuối cùng, sau đó kiểm tra xem họ là hoàn toàn có thể nhìn thấy hay không:
// getTop() and getBottom() are relative to the ListView,
// so if getTop() is negative, it is not fully visible
int first = 0;
if(listView.getChildAt(first).getTop() < 0)
first++;
int last = listView.getChildCount() - 1;
if(listView.getChildAt(last).getBottom() > listView.getHeight())
last--;
// Now loop through your rows
for(; first <= last; first++) {
// Do something
View row = listView.getChildAt(first);
}
Addition
Bây giờ tôi muốn nhận được Index tắt tất cả các yếu tố, trong đó được hiển thị đầy đủ
Tôi không chắc chắn ý nghĩa của câu đó. Nếu mã trên không phải là chỉ số bạn muốn, bạn có thể sử dụng:
int first = listView.getFirstVisiblePosition();
if(listView.getChildAt(0).getTop() < 0)
first++;
Để có một chỉ số đó là tương đối so với adapter của bạn (. Tức là adapter.getItem(first)
)
Không bao giờ nói những gì tôi đã nói :) – Luksprog
@Luksprog Đừng lo lắng. – Sam
listView.getChildAt (index) .getTop() lừa công việc cho tôi..thanks – CoDe