2010-04-11 5 views
2

사용자 지정 ListAdapter에서 페이징을 구현하려고합니다. 지금은 getView()positionListAdapter.getCount() 인 경우 >= 인 경우 체크 인하여 ListView의 마지막 항목이 표시 될 때 다음 페이지를 요청하고 있습니다.ListView/ListAdapter 페이징

잘 작동하지만 목록의 마지막 항목이 실제로 사용자에게 표시되면 요청을하는 더 좋은 방법 (또는 다른 방법)이 있는지 궁금합니다. 누구든지 방법을 알고 있습니까?

답변

4

거의 같은 방법으로 그 일을 해요 :

public static final int SCROLLING_OFFSET = 5; 
// ... 
private final ArrayList<T> items = new ArrayList<T>(); 
// ... 
if (SCROLLING_OFFSET == items.size() - position) { 
    if (hasNextPage()) { 
     addNextPage(); 
    } 
} 

private boolean hasNextPage() { 
    // basically calculates whether the last 2 pages contained the same # of items 
} 

private void addNextPage() { 
    // show spinner 
    // fetch next page in a background thread 
    // add to items 
    notifyDataSetChanged(); 
} 
0

수표를 모두 삭제하십시오. 내 경험에 의하면 getView() 항목이 화면에 올 때만 호출됩니다.

+0

무슨 뜻인지 확실하지 않습니다. 수표는 거기에 있어야합니다. 그렇지 않으면 모든 행이 표시됩니다. – synic

+0

Pls가 더 자세히 설명합니다. – OneWorld

2

내가 그것을 할 수있는 더 좋은 방법이 생각합니다. OnScrollListener 인터페이스 구현. 이것 좀 봐 : Endless Scrolling ListView