2012-12-14 2 views
2

listView가보기를 너무 빨리 재생합니다.listView가 보이지 않는 뷰를 제거하면 컨트롤 할 수 있습니까?

내 listView가 스크롤되면보기가 떨어져 화면이 즉시 제거됩니다.

각 셀 (행)에는 이미지 범용 이미지 로더가 사용됩니다.
화면에서 떨어지는보기가 보이는 영역으로 돌아올 때 이미지를 다시로드해야합니다. (짧은 시간 동안 스텁 이미지를 보여주고 올바른 이미지를로드합니다).

필자는보기 재생 동작을 유지해야하지만 사용자가 이미지를 계속 다시로드하지 않도록 목록보기의 동작을 수정할 수 있습니까? (어쩌면 캐시의 # 일반 목록보기)

+0

구성 (ImageLoaderConfiguration)을 표시하고 옵션 (DisplayImageOptions)을 표시하십시오. – NOSTRA

답변

0

불행히도 ListView와 친구들을위한 코드는 높이를 알지 못하고 고르지 않은 크기의 항목을 스크롤하도록 설계 되었기 때문에 끔찍하게 복잡합니다. 따라서 기본 동작 외에는 아무 것도 실행할 수 없게됩니다. 또한 액세스가 필요한 대부분의 방법은 쉽게 비헤이비어를 사용자 정의 할 수 있습니다. 여러 플랫폼에서 스크롤링, 미끄럼, 끌기, 스크롤링, 키보드 포커스 & c와 같은 미묘한 차이를 시도하고 시도하는 것은 엄청난 일입니다.

아마도 가장 좋은 해결책은 활성화 된보기 위치 주변에 느리게 채워지는 이미지 캐시를 유지하는 것입니다. 꼭 필요한 것은 아닙니다. 그러나 ListView를 사용하는 것이 더 쉽습니다.

매우 유용한 API는 ListView.setRecyclerListener (AbsListView.RecyclerListener listener)로, 어떤 이미지가 실제로 표시되는지 추적 할 수 있습니다.

+1

입력 해 주셔서 감사합니다. 유니버설 이미지 로더에서 캐시를 활성화했습니다. 그러나 캐시에서 이미지를 불러오는 속도가 빠르지 않아서 나가서 화면으로 돌아올 때마다 다시로드된다는 것을 알 수 있습니다. 유니버설 이미지 로더의 캐시를 올바르게 사용하지 않았을 수 있습니까? – eugene

+0

@Eugene, 사용할 수있는 목록보기의 캐시도 있습니다. –

+0

실제 문제는 보이는 항목 앞이나 뒤쪽에 한두 행을 채워야한다는 것입니다.캐싱의 양은 그걸로 당신을 도울 것입니다. –

0

목록보기 대신 ScrollView를 사용하도록 제안 할 수 있습니다. ListView는 많은 양의 데이터를 효율적으로 표시하도록 설계되었으므로 화면에 표시되지 않는 항목이 삭제됩니다. 스크롤 뷰와 관련하여로드 된 후에는 스크린 개체를 다시 만들지 않고 위아래로 스크롤 할 수 있습니다 (파괴되지 않기 때문에).

참조 : http://developer.android.com/reference/android/widget/ScrollView.html

편집 : How do i prevent recycled ListView items from showing old content?

목록보기의 getView 메소드를 오버라이드 (override) 할 수있는 posibility이 있습니다 :리스트 뷰를 사용하는 것이 필수 인 경우, 여기를 살펴 cluld

listView가 유지하고있는 숫자가 파괴되지 않도록 더 많은 항목을 유지하십시오.

+0

제안 해 주셔서 감사합니다. 그러나 나는 많은 데이터를 기대하기 때문에 재활용 행동을 유지할 필요가있다. listview를 재활용하는 방법이나 scrollview에 재활용 동작을 추가하는 방법을 제어하는 ​​방법을 찾고 싶습니다. (어느 것이 더 쉬운 지 모르겠 음) – eugene

+0

내 편집을 확인하십시오. –

+0

질문을 게시하기 전에 그 내용을 훑어 보았습니다. 셀 자체가 아닌 '데이터'를 유지하는 것이 문제인 것처럼 보입니다. – eugene