뭐든지 그렇지만 해보고 나니 별거 없더라는...
역시 진리는..ApiDemos 에 있었음..
com.example.android.apis.view.List13.java를 참고
샘플은 Views/Lists/13.slow Adapter
덧붙여 스크롤을 맨 마지막으로 이동시 다음 리스트를 가져와서 갱신하는 것도 해결~!
원본은...
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
mBusy = false;
int first = view.getFirstVisiblePosition();
int count = view.getChildCount();
for (int i=0; i<count; i++) {
TextView t = (TextView)view.getChildAt(i);
if (t.getTag() != null) {
t.setText("1"+mStrings[first + i]);
t.setTag(null);
}
}
mStatus.setText("Idle");
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
mBusy = true;
mStatus.setText("Touch scroll");
break;
case OnScrollListener.SCROLL_STATE_FLING:
mBusy = true;
mStatus.setText("Fling");
break;
}
}
수정본은...(Json 파싱 일경우)
listGoods.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
mBusy = false;
int first = view.getFirstVisiblePosition();
int count = view.getChildCount();
for (int i=0; i<count; i++) {
try {
View v = view.getChildAt(i); //우선 리스트에서 하나를 가져온다
imageGift = (ImageView)v.findViewById(R.id.imageGift);
// 그 하나는 커스텀 레이아웃 이기에... 그 안에서 view를 찾는다.
JSONObject order = getGoodsList.getJSONObject(first+i);
//값 설정
String imgPath = CommonVar.IMG_URL+order.getString("goods_id")+".png";
imageURL = new URL(imgPath);
Drawable d = Drawable.createFromStream(new URL(imgPath).openConnection().getInputStream(), "src");
imageGift.setImageDrawable(d);
} catch (JSONException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
mBusy = true;
break;
case OnScrollListener.SCROLL_STATE_FLING:
mBusy = true;
break;
}
}
//스크롤시 이벤트 받기
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
//스크롤을 맨 마지막 까지 했을경우 (다음 페이지 가져오기)
if ((firstVisibleItem + visibleItemCount) == (totalItemCount)) {
page++;
JSONArray getArr =getMyList(page);
if(getArr != null){
for(int i = 0; i < getArr.length(); i++){
try {
getGoodsList.put(getArr.getJSONObject(i));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//리스트 갱신
Adapter.notifyDataSetChanged();
}
}
}
});
'자료' 카테고리의 다른 글
Android에서 NDK + JNI + FFmpeg 사용 (4) | 2012.03.27 |
---|---|
동적으로 객채 생성후 각각에 이벤트 주기~! (0) | 2012.03.26 |
Intent 활용 예시 (2) | 2012.02.07 |
갤러리 공유 기능 추가하기 (0) | 2012.02.06 |
C2DM 발송 테스트 소스 (0) | 2012.02.02 |