ArrayAdapter paging 만들기

ArrayAdapter 사용시 해당 리스트에 대해서 paging 하여 초기화 해주는 메소드를 작성해 보았다.

아래 메소드 형태로 List 를 재정의하고


/**
* 리스트정보 변경시에 리스트를 초기화 해주는 메소드
*/
public void initArrayList() {
mItems.clear(); // 가지고 있는 아이템 초기화
for (int i = arrPos ;
(i < tItems.size()) && (i < (arrPos + 10));
i++) { // 현재 포지션에서 다음 10개 정보를 가져와 담는다
mItems.add(tItems.get(i));
}

for (int j = (mItems.size()) ; j < 10 ; j++) {
mItems.add("");
} // 열개 정보를 못가지고 올경우 나머지는 null로 담는다

// 마지막 이전 다음 버튼을 셋팅한다.
mItems.add("이전");
mItems.add("다음");

for (int j = 0 ; j < mItems.size() ; j++) {
if (SSMApplication.DEBUG_MODE) {
Log.i(this.getClass().getName().toString(),"initArrayList.mItems.get(j).toString() : "+ j + " / " +mItems.get(j).toString());
}
}
}

getView 에서 setonClickListener 로 변경된 내용을 제 호출해 본다.


grid_item_text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (currentString.equals("이전")) {
if (arrPos >= 10) { // 이전데이터가 10개 이상 존재할 경우 이전 클릭 활성화
arrPos -= 10;

initArrayList();

moveAdapter.notifyDataSetChanged(); // list 갱신된 정보 다시 보여주기
}
}





위 사항에서 중요한 것은 해당 리스트 정보의 크기가 레이아웃에 보여주는 형식에 맞추어져 있어야 하는 것이다. 그렇지 않으면 전에 표시에 대한 잔상이 나오므로 문제가 된다.

댓글

이 블로그의 인기 게시물

CoreOS Vagrant on Windows.md

The Docker User Guide

Install Docker