2012-12-04 3 views
1

내 목록의 이전 구현은 내 항목으로 채워진 ScrollView 내부의 간단한 LinearLayout입니다.안드로이드 ListView 버퍼

간단히 CursorAdapter를 사용하기 위해 ListView의 Android 구현으로 전환했습니다. 모든 것이 작동하지만 나에게 힘든 한 가지 문제가 있습니다.

내 항목은 일부 TextView와 하나의 ImageView로 구성됩니다. 인터넷 또는 로컬 ImageCache에서 이미지를로드합니다. 하지만 ImageCache를 사용하더라도 스크롤하는 동안 비동기 적으로로드되는 이미지를 볼 수 있습니다. 이미지가 처음에는 반쯤 튀어 나오게됩니다.

문제는 ListView의 재활용 메커니즘이 빠르게 작동한다는 것입니다. Listview에서 200dp 이상 떨어져있는 listitem을 표시되게하고 싶습니다. 항목이 표시 될 때까지 항목이 완전히로드되도록하는 간단한 미리로드 된 메커니즘입니다. 그러나 나는 ListView에서이 버퍼를 어디에 추가 할 수 있는지, 그리고 어떻게 찾을 수 있는지 전혀 알지 못했습니다.

누구나 비슷한 구현을 알고 있습니까? 나는 문서에서 뭔가를 간과 했는가?

그러나 저는이 종류의 버퍼를 Google에서 구현하지 않았 음을 확신합니다. 피플 앱을보세요. 리사이클 순간의 getView() 호출에 따라 자신의 "미리 보는"인덱스를 계산하는 것입니다 당신이 희망을 수있는 최선 소개

How it works now

+0

** "그러나 ListView에서이 버퍼를 추가 할 수있는 위치와 방법을 찾지 못했습니다."** - 데이터를 버퍼링하거나 미리로드하는 것은 'ListView'의 책임이 아닙니다. 표시됩니다. 그것은 어댑터 (또는 어댑터를 작성하는 백그라운드 코드)의 책임입니다. 그래서'getView (...)'메소드는'ListView' 클래스가 아닌 어댑터 클래스의 멤버입니다. ListView는 단순히 목록 항목을 재활용해야 할 때마다 해당 메소드를 호출합니다. – Squonk

답변

1

에서 작동하는 방법 없음 미리 로딩하지 ...

귀하의 CursorAdapter 하위 클래스와 요청 된 위치. 분명히 getView()이 호출되면 Android는 해당 위치의 항목을 표시하려고합니다. 네가 가진다면 그려라. 그렇지 않다면, 은 다음 N 개의 항목을 대기열에 넣기 시작합니다. 그러나 당신은 당신의 look-ahead를 원할 것입니다.

+0

정보를 더 추가 할 수 있습니까? – Kamil