매우 실망한 문제가 있으며 잘못된 점을 알지 못합니다. GridView 만 포함 된 간단한 XML을 작성합니다. 이 gridview는 내 코드로 검색 한 특정 URL에서 다운로드 한 이미지 (ImageView)를 표시해야합니다.GridView에서 스크롤 할 때 ImageViews의 위치가 변경되었습니다.
그래서이 APP의 생각은 URLS에서 이미지를 다운로드하고 GridView에서 그 이미지를 보여줄뿐입니다. 먼저 Universal Image Loader 라이브러리를 사용하고 있다고 말해야합니다. 먼저 제의 getView 코드를 찾아보세요 :
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if(convertView == null) {
iv = new ImageView(MyActivity.this);
iv.setLayoutParams(new GridView.LayoutParams(size,size));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
Log.d("APP", "convertView is NULL");
}
else {
iv = (ImageView) convertView;
Log.d("APP", "convertView is NOT null");
}
loader.displayImage(URLS.get(position), iv);
return iv;
}
문제 : 위의 작품
코드, 그것은의 GridView에서 이미지를 보여줍니다.
- 모든 이미지를 다운로드 한 (보이지 않는 심지어 그 이미지)
- 내가 위로 다시 스크롤 할 때 나는, 장소 0 있다는 이미지를 볼 장소입니다 : 내가 아래로 스크롤 할 때, 나는 것을 볼 수 1 그리고 다시 다운로드되었습니다. 다시 아래로 스크롤하면 이미지의 위치가 다시 바뀝니다. 백업을 다시 스크롤하면 이미지가 다시 전환되는 것을 볼 수 있습니다 (다시 다운로드). 이것은 무한하다.
내가 convertView 변수가 null의 경우는 확인하지 않음으로써이 문제를 해결 :이 문제를 해결 방법
. 사실 나는 if/else 절을 생략했습니다.
메모리에 cache = true를 사용했습니다. 따라서 다운로드 정지 및 이미지가 영원히 존재합니다.
왜 내가 도움을 청하고 있습니까? 주로 나는 성능상의 이유로 if/else 절을 생략하면 안된다는 것을 알고 있기 때문에 주로. 사용자의 기억을 망치고 싶지 않고 빠르고 안정적인 사용자 경험을 제공하고자합니다. 또한 나는 무엇이 잘못 될 수 있는지 알고 싶다.
도움 주셔서 감사합니다. 많이 appriciated.
답장을 보내 주셔서 감사합니다. 그러나 유니버설 이미지 로더는 그 목적을 위해서만 만들어 졌기 때문에 이상하지 않습니다. 하지만 너의 도서관을 볼거야. – rootpanthera