2013-01-08 2 views
4

데이터베이스에 5000 개의 이름이 있습니다. 이 모든 이름을 ListView에 넣기를 원합니다. 다음과 같은 요소를 (드로어 블 Drawable에 로컬로 저장됩니다)지연로드를 사용하는 경우와 사용하지 않을 때.

  1. 아이콘 이미지 킬로미터에
  2. 이름
  3. 거리를 가지고 어떤
  4. 내가 검색 필터링, 이런 식으로 뭔가를 사용하여이 목록보기를 필터링하고

:

adapter.getFilter().filter(someText); 

예를 들어 목록보기를 정렬하고 있습니다. sort listView names alphabetically (A-Z 및 Z-A). 정렬은 다음과 같이 목록보기 어댑터에 수행됩니다

adapter.sort(new Comparator<String>() { 

       @Override 
       public int compare(String lhs, String rhs) { 
        return lhs.getPlaceName().compareTo(rhs.getPlaceName()); 
       }; 
      }); 

지금 나는 (내가 5000 개 이름을 가지고 있기 때문에) 어댑터의 성능을 고려하여 목록보기에 이름 게으른 로딩을 사용할지 여부를 꽤 혼란 스러워요. 제발 제안 해주세요.

+4

어쨌든 데이터베이스이므로 커서? 내가 아는 한, 이것은 게으른로드 자체로 않습니다. – NickL

+1

이러한 경우에는 페이징을 사용하는 것이 좋습니다 (예 : Play 스토어 앱). 게으른 - 처음으로 100 개 정도를로드하고, 다음에 100_ 또는 100_ 이전에 __load를 제공합니다 (사용자가 상단 또는 끝으로 스크롤 할 때). 쿼리 필터링을 연기하십시오. –

+0

@NickL 데이터베이스 액세스를 자동화하는 David M Chandler가 Android에서 SQLite 용 오픈 소스 ORM을 사용하고 있습니다. 액세스 권한이있는 것은 데이터 액세스 object.ie뿐입니다 (삽입, 삭제, 업데이트 만 할 수 있음) 그 위에). 내가 커서를 사용할 수 있는지 확실하지 않습니다.? –

답변

2

또는 데이터베이스에 데이터를 정렬하여 저장 한 다음 지연로드를 적용 할 수 있습니다. @Singularity가 제안한 접근 방식이 매우 좋기 때문에 전체 데이터가 아니라 [100, 말]의 청크 만 정렬 할 수 있습니다. 또한 각 청크에 대해 정렬을 수행해야합니다.

+0

내가 실제로 원하는 것은 내가 검색을 수행하든 정렬을하든 상관없이 모든 5000+ 항목을 한꺼번에 적용해야한다는 것입니다. 만약 내가 게으른 로딩을 할 수있는이 달성 할 수 있습니다.? –

+0

정렬 된 데이터를 데이터베이스에 저장하고 다시 검색하면 스레드에 대한 엄청난 작업이 될 것입니다. –

+1

안녕하세요 Suresh, 게으른로드 란 필요한 항목을로드하는 것을 의미합니다. 그래서 당신이 모든 5000에 적용 할 정렬을 원한다면 그것은 당신의 목적을 해결하지 않을 것 같아요. 또한, ur urignal ques 당, 나는 당신이 런타임에 건물에없는 정적 데이터베이스를 가지고 있다고 가정. 그러므로 손으로 그것을 분류하기위한 제안. 런타임에 ur DB에 항목을 추가하지 않으면 미리 테이블을 정렬 한 다음 @Singularity에서 제안한대로 페이징을 활용할 수 있습니다. 도움이되는지 알려주세요. 귀하의 제안에 대해 – HarshalK

관련 문제