마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

lazylistview 구현 도와주세요...

0 추천

제가 만들어놓은 커스텀 아답터가 있습니다.

baseadapter 상속했구 listadapter하고 filterable 구현한 상태입니다

근데 원래는 제가 데이터베이스에서 처음에 한번에 로드하는 방식으로 했는데...

미친짓었네요 ㅋㅋㅋㅋ 데이터 많아지니까 그냥 outofmemory떠요..

문제는 그걸 lasy화 하려는데... 생각해보니까 이넘은 한 테이블에서만 정보를 로드해오는게 아니고...

7개 테이블에서 읽어와서 하나는 1개는 프레임 레이아웃으로 보여주고 6개는 1개와 5개로 나뉘어서

각자 lazy리스트뷰에 보여줘야합니다... 1개짜리는 일단 간단하게 해결했고... 프레임 레이아웃인넘도 해결했습니다...

테이블 5개짜리는 어떻게... 해야 하죠??? 참고로 5개짜리는 같은 인터페이스를 상속한 클래스에요...

 

아래 소스코드는 제가 알고있는 레이지뷰 구현방식입니다...

 

public class DataLoader {
 
 private final HashMap<Integer, Data> list;
 
 public DataLoader() {
  list = new HashMap<Integer, Data>();
 }
 
 public void loadDataFromThread(final Integer pos, final View v) {
  if (list.containsKey(pos)) {
   v.setTag(list.get(pos));// 데이터 존재시 여기서 컷
   return;
  }
  
  final Handler handler = new Handler(new Handler.Callback() {
   
   @Override
   public boolean handleMessage(final Message msg) {
    v.setTag(msg.what);// 실제론 뷰에 그리는작업이라 핸들러 생성
    return true;
   }
  });
  
  new Thread(new Runnable() {
   
   @Override
   public void run() {
    final Data data = loadData(pos);
    list.put(pos, data);
    handler.handleMessage(handler.obtainMessage(0, data));
   }
  }).start();
  
 }
 
 private Data loadData(final Integer pos) {
  if (list.containsKey(pos)) {
   return list.get(pos);
  }
  
  // 데이타 로드
  return new Data();// 예시를 위한 임시 생성자입니다...
 }
 
}

 

수상한i (8,050 포인트) 님이 2013년 3월 3일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...