2012-10-29 32 views
18

Như trong tiêu đề: Tôi muốn biết làm thế nào để có được danh sách (mảng) của tất cả các mục hiện đang được hiển thị trong AdapterView của tôi.
Tại sao? Các đối tượng được hiển thị trong AdapterView của tôi yêu cầu phát hành trình nghe sau khi người dùng đóng AdapterView. Tôi cần làm điều đó để tối ưu hóa ứng dụng của mình.
Hoặc có phương pháp nào (mà tôi có thể ghi đè) được thực thi khi hủy các lượt xem không?Cách nhận các mục hiện được hiển thị trong AdapterView?

Trả lời

28

cụ OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener { 

và thiết lập OnScrollListener trong ListView

listView.setOnScrollListener(NewsCategoryDC.this); 

và bạn có thể nhận được hàng có thể nhìn thấy đầu tiên và cuối cùng

@Override 
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) { 
    firstVisibleRow = listView.getFirstVisiblePosition(); 
      lastVisibleRow = listView.getLastVisiblePosition(); 
/*Now you get the first and last visible rows, and you easily get the rows from first to last visible row and allocate resources to visible rows or deallocate resources to rows except visible rows..,.*/ 
} 

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) {} 

TRY NÀY .. ,.

và nếu một số cách tốt nhất khác bạn nhận được, hãy đăng, đây là câu hỏi rất hữu ích và tốt ..,.

Cảm ơn ..,.

EDIT

add mã trong OnScroll phương pháp ............................()

@Override 
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) { 
    int firstVisibleRow = listView.getFirstVisiblePosition(); 
    int lastVisibleRow = listView.getLastVisiblePosition(); 

    for(int i=firstVisibleRow;i<=lastVisibleRow;i++) 
    { 
     //Write your code here(allocation/deallocation/store in array etc.) 
     System.out.println(i + "=" + listView.getItemAtPosition(i)); 
    } 
} 
+0

Điều tuyệt vời là tôi không biết về điều đó. Nhưng bây giờ: Làm thế nào để có được quan điểm thực tế? Tôi có nghĩa là một cái gì đó như ViewGroup.getChildAt (vị trí) nhưng để sử dụng trong AbsListView. – RedScorpio

+0

Cảm ơn! Nó hoạt động! – RedScorpio

+0

Phương thức 'OnScroll' chấp nhận một' AbsListView'. Có cách nào để viết trình xử lý cuộn có chấp nhận 'AbstractView' thay thế không? –

6

gợi ý Như nhỏ:

Nếu bạn muốn để có được tất cả các yếu tố đó được hiển thị toàn (-> mong đợi những, những người trên dưới cùng hoặc trên cùng và gần như ra khỏi màn hình), bạn nên nhìn vào bài đăng này:

See only fully visible ListView-Items

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