2014-05-19 4 views
0

목록보기를 사용하여 Android 파일을 표시합니다. 즉, 서버의 폴더 및 파일을 표시합니다.목록보기 웹에서 축소판 이미지를로드 할 때 잘못된 위치에 잘못된 이미지가 표시됩니다.

내 활동을 시작하면 원하는대로 화면에서 목록을 볼 수 있습니다. 및 서버에서 데이터를 가져 오는 중입니다. 이미지 섬네일을 표시 할 필요가있는 경우는

등의 구조를 표시하고 싶다. 엄지 손가락을 표시 할 필요가있을 때까지 디폴트의 이미지 아이콘을 표시하는 디폴트의 imageloader에 의해, 서버로부터 얻는 섬네일 URL을 가져야한다.

오디오, 비디오 ..... 또는 파일과 같은 다른 파일 형식이있는 경우 해당 아이콘을 표시해야합니다.

내가 목록을 보여줄 때 관련 파일에 대한 적절한 아이콘을 보여줍니다. 그러나 내가 스크롤을 시작하려고 할 때 내 축소판이 서버에서로드되고 서버에서 이미지를 가져 오는 중 서버에서 이미지를 가져 와서 해당 비트 맵 축소판을 표시하면 폴더 또는 음악 파일 아이콘과 같은 다른 파일 형식의 축소판 비트 맵이 표시됩니다. listview의 재사용을 봅니다. 서버에서 이미지를 가져올 때이 위 치가 발생합니다.

이 문제를 극복하는 방법을 제안 해주세요. 아래 은 내 listview의 getview() 메소드입니다.

공개보기의 getView (INT 위치 convertView 뷰, 뷰 그룹 상위) {

ViewHolder viewHolder = new ViewHolder(); 
if(convertView == null){ 
    convertView = _inflate.inflate(R.layout.layout_list, null); 
    viewHolder.text = (TextView) convertView.findViewById(R.id.title); 
    viewHolder.owner = (TextView) convertView.findViewById(R.id.owner); 
    viewHolder.image = (ImageView) convertView.findViewById(R.id.thumb); 
    convertView.setTag(viewHolder); 
}else{ 
    viewHolder = (ViewHolder) convertView.getTag(); 
} 

HashMap<String, String> item = (HashMap<String, String>) getItem(position); 

viewHolder.text.setText(item.get("poiName").toString()); 
viewHolder.owner.setText(item.get("owner").toString()); 

ImageView imageView = viewHolder.image; 
imageView.setTag(item.get("thumbs")); 

//Is type of file is picture then display thumbnail by using imagloader class 
    if (genericDAO.sub_content_type.equalsIgnoreCase(Constants.TYPE_PICTURE)) 
{ 

     String url = getTumbnalURL(); 
     viewHolder.image.setTag(genericDAO.id); 
     viewHolder.image.setScaleType(ScaleType.CENTER_CROP); 
     mImageLoader.DisplayImage(id, url, mActivity,viewHolder.image); 

    } 
    else 
    { 
    //Display related file icon 
     viewHolder.image.setImageResource(FileUtil.getImageRelatedToFileType(mcontext, sub_ext)); 
    } 

return convertView; 

}

답변

0

코드 불충분 않는다. 이 코드에서 이해할 수있는 것은 이미지에 대해 느린 로딩을 사용하고 mImageLoader은 이미지를 viewHolder으로 설정하는 스레드를 실행해야합니다. imageInfo를 else 부분의 태그로 설정할 수도 있습니다. 새로운 이미지가 다운로드 될 때

.... 다른

{

//Display related file icon 
    viewHolder.image.setImageResource(FileUtil.getImageRelatedToFileType(mcontext, sub_ext)); 
    viewHolder.image.setTag(genericDAO.id); 
} 

내부하여 ImageLoader는, 당신이 viewHolder에 새로운 이미지를 설정 직전에 정확한 태그를 확인하시기 바랍니다.