2012-10-29 4 views
18

제목 : AdapterView에서 현재 표시된 모든 항목의 목록 (배열)을 얻는 방법을 알고 싶습니다.
왜? AdapterView에 표시되는 객체는 사용자가 AdapterView를 닫은 후에 수신기를 해제해야합니다. 내 애플 리케이션을 최적화하기 위해 그것을 할 필요가있다.
또는 뷰의 파기에 대해 실행되는 메서드가 있습니까?현재 AdapterView에 표시된 항목을 가져 오는 방법은 무엇입니까?

답변

28

구현 OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener { 

및 목록보기

listView.setOnScrollListener(NewsCategoryDC.this); 

에 OnScrollListener 설정하고 첫 번째와 마지막 가시 행

@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) {} 

를 얻을 수 있습니다 이것을 시도 .. ,.

그리고 다른 좋은 방법으로 게시물을 보내 주시면 매우 유용하고 좋은 질문입니다.

감사합니다.

EDIT ............................ onScroll에

추가 코드() 메소드

@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

좋은 점은, 나는 그것에 대해 몰랐습니다. 그러나 지금 : 실제 의견을 얻는 방법? ViewGroup.getChildAt (위치)와 같은 것을 의미하지만 AbsListView에서 사용하는 것입니다. – RedScorpio

+0

감사합니다. 작동 중! – RedScorpio

+0

'OnScroll' 메쏘드는 AbsListView를 받아들입니다. 대신에'AbstractView'를 받아들이는 스크롤 핸들러를 작성하는 방법이 있습니까? –

6

작은 힌트 :

완전히 볼 수 있습니다 모든 요소를 ​​원한다면 - 당신이 게시물에 보일 것입니다 (> 상단이나 하단에있는 화면에서 거의 사람들을, 기대를)

See only fully visible ListView-Items

관련 문제