블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2016. 8. 5. 15:18 Programming/Android



 운영체제 : Windows 8.1 64bit

 개발툴 : Android Studio 1.5

 SDK Version : Min 19, Max 24

 작성날짜 : 2016-08-05





참고 : 헤롱이 - 안드로이드(android) ListView + ArrayAdapter


ListView 에서 스크롤 이벤트 발생 시 데이터 추가 부분을 구현해 봄.


하단으로 스크롤하면 데이터를 요청하고 새로 받아온 데이터를 Adapter의 ArrayList 에 추가한다.


그리고 ListView에 반영된 데이터를 업데이트하여 보여준다.



Activity 부분


boolean lastitemVisibleFlag false;

ArrayList<Item> arr_listItems;


private void Init_ListView(){
arr_listItems = new ArrayList<>();
lv_accomodation = (ListView)findViewById(R.id.lv_accomodation);
adapter = new AccomAdapter(this, arr_listItems);
lv_accomodation.setAdapter(adapter);

lv_accomodation.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && lastitemVisibleFlag) {
// 데이터 로드
}
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
lastitemVisibleFlag = (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount);
}
})
;
}


onScrollStateChanged 는 스크롤 상태변경 시 발생하는 이벤트이다. 스크롤 상태가 마지막 아이템이 보일때 if문을 만족한다.

if 문 안에는 데이터를 로드하는 부분을 구현하면 됨.


onScroll 은 스크롤 상태를 받아오는 이벤트이다.

여기서는 현재 스크롤의 상태가 마지막 아이템이 보이는지 유무를 판별한다.



private void setData(){

if(listItem.getItems().size() != 0){
for(int i = 0 ; i < listItem.getItems().size() ; i++){
arr_listItems.add(listItem.getItems().get(i));
}
}

this.runOnUiThread(updateUI);
}

private Runnable updateUI = new Runnable() {
public void run() {
MainActivity.
this.adapter.notifyDataSetChanged();
}
}
;


Activity 에 있는 ArrayList에 받아온 데이터를 추가시켜주고 업데이트 시켜준다.


실시간으로 업데이트를 시켜주려면 Runnable로 해줘야 반영이 된다고 한다.




posted by Kanais