안드로이드 개발 질문/답변
(글 수 45,052)
이렇게 리스트뷰가 있고
movie_list_latest.setAdapter(adapter_latest);
Adapter를 커스텀으로 만들었습니다
그리하여 그안에 getview가 있고
이런식으로 dm.fetchDrawableOnThread를 호출하여 리스트 뷰에 이미지를 넣어주는데
리스트가 스크롤할떄도 계속 getview가 호출되어
계속 이미지 받아오는 쓰레드를 만들어 호출되더군요
이떄 스크롤될때는 이미지 받아오는 쓰레드가 생성되지 않고
스크롤이 멈추었을때 이미지를 받아오고 싶습니다
이떄 어떻한 방식으로 구현해야하나요??
생성된 쓰레드에 신호를 주어 스크롤될떄는 안받다가
스크롤이 멈추었다는 신호가 오면 쓰레드에 신호를 보내 받게 할려고 했는데
그러면 스크롤을 계속 한다면 대기 하고 있는 쓰레드가 너무 많이생성되어 안될것 같다는게 제생각입니다
혹시 다른 방법이 있다면 도움 부탁드리겠습니다 감사합니다
movie_list_latest.setAdapter(adapter_latest);
Adapter를 커스텀으로 만들었습니다
그리하여 그안에 getview가 있고
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
v = convertView;
try {
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(layoutid, null);
} catch (OutOfMemoryError e) {
e = null;
return null;
} catch (InflateException e) {
e = null;
return null;
}
viewHolder = new ViewHolder();
v.setTag(viewHolder);
final Movie_List_Item listData = (Movie_List_Item) list.get(position);
if(listData != null){
v.setBackgroundColor(Color.WHITE);
if(viewHolder.imgThumb != null && !listData.app_imageURL2.equals("")) {
viewHolder.imgThumb.setBackgroundResource(UtilBox.no_image);
dm.fetchDrawableOnThread(listData.app_imageURL2, viewHolder.imgThumb);
}이런식으로 dm.fetchDrawableOnThread를 호출하여 리스트 뷰에 이미지를 넣어주는데
리스트가 스크롤할떄도 계속 getview가 호출되어
계속 이미지 받아오는 쓰레드를 만들어 호출되더군요
이떄 스크롤될때는 이미지 받아오는 쓰레드가 생성되지 않고
스크롤이 멈추었을때 이미지를 받아오고 싶습니다
이떄 어떻한 방식으로 구현해야하나요??
생성된 쓰레드에 신호를 주어 스크롤될떄는 안받다가
스크롤이 멈추었다는 신호가 오면 쓰레드에 신호를 보내 받게 할려고 했는데
그러면 스크롤을 계속 한다면 대기 하고 있는 쓰레드가 너무 많이생성되어 안될것 같다는게 제생각입니다
혹시 다른 방법이 있다면 도움 부탁드리겠습니다 감사합니다
2011.03.01 14:24:31
제가 쓰는 코드내용 일부 알려드릴께요
이미지는 서버로 부터 받아오는 방식이고
스크롤시에 서버에 요청한 것들을 취소하고 스크롤이 끝난 후에 일정시간 멈춰있으면 이미지를 받아오는 방식입니다.
참고하세요
저는 getView에 넣지 않고 onScroll에서 처리해서 Adapter에 넣어 주는 방식을 택했습니다.
if (runnable != null) {
// 이미지 요청했던 부분 취소하는 곳입니다.
view.removeCallbacks(runnable);
}
downloadThumbnailRunnable = new Runnable() {
@Override
public void run() {
//이미지 요청하는 부분입니다.
}
};
// DELAYED_TIME 후에 runnable내용을 실행하도록 하는 곳입니다.
view.postDelayed(runnable, DELAYED_TIME);
이렇게 onScroll 부분에 넣어주시면 님이 원하시는 설계가 가능해 보이네요
이미지는 서버로 부터 받아오는 방식이고
스크롤시에 서버에 요청한 것들을 취소하고 스크롤이 끝난 후에 일정시간 멈춰있으면 이미지를 받아오는 방식입니다.
참고하세요
저는 getView에 넣지 않고 onScroll에서 처리해서 Adapter에 넣어 주는 방식을 택했습니다.
if (runnable != null) {
// 이미지 요청했던 부분 취소하는 곳입니다.
view.removeCallbacks(runnable);
}
downloadThumbnailRunnable = new Runnable() {
@Override
public void run() {
//이미지 요청하는 부분입니다.
}
};
// DELAYED_TIME 후에 runnable내용을 실행하도록 하는 곳입니다.
view.postDelayed(runnable, DELAYED_TIME);
이렇게 onScroll 부분에 넣어주시면 님이 원하시는 설계가 가능해 보이네요




이미지를 가져오는 것은 아니지만 리스트 스크롤 중에 데이타 채워 넣는 예제요.
loading... 나오는것이랍니다.