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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.