안드로이드에서 끝이 없는 리스트를 만들고싶어요.


리스트의 항목을 조금만 보여주고 유저가 스크롤해서 리스트의 끝에 도달했을때 추가로 항목을 가져오는 식으로 동작하게 하고싶은데요. 어떻게 할 수 있을까요?

  • 2016년 01월 27일에 작성됨

조회수 211


1 답변


좋아요
0
싫어요
채택취소하기

OnScrollListener를 구현하는 방법이 있는데요.

public class Test extends ListActivity implements OnScrollListener {

    Aleph0 adapter = new Aleph0();

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(adapter); 
        getListView().setOnScrollListener(this);
    }

    public void onScroll(AbsListView view,
        int firstVisible, int visibleCount, int totalCount) {

        boolean loadMore = /* 패딩을 넣을지 */
            firstVisible + visibleCount >= totalCount;

        if(loadMore) {
            adapter.count += visibleCount;
            adapter.notifyDataSetChanged();
        }
    }

    public void onScrollStateChanged(AbsListView v, int s) { }    

    class Aleph0 extends BaseAdapter {
        int count = 40; /* 처음 보이는 항목의 수 */

        public int getCount() { return count; }
        public Object getItem(int pos) { return pos; }
        public long getItemId(int pos) { return pos; }

        public View getView(int pos, View v, ViewGroup p) {
                TextView view = new TextView(Test.this);
                view.setText("entry " + pos);
                return view;
        }
    }
}

ListActivity는 처음에 항목을 40개만 보여주고 유저가 스크롤해서 끝에 도달하면 항목을 추가해줍니다. 만약에 이런 항목들이 웹 데이터를 가져오는것처럼 오래걸리는거라면 쓰레드를 분리해서 사용해야합니다.

  • 2016년 01월 27일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close