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

조회수 2298회

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

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)