2014-05-19 55 views
0

我使用List視圖來顯示android文件,即顯示來自服務器的文件夾和文件。從網頁加載縮略圖圖像時,ListView在錯誤位置顯示錯誤的圖像

當我開始我的活動時,我可以看到屏幕上的列表,就像我想要的一樣。 ,我從服務器獲取數據。 我想要顯示像

當有圖像文件需要顯示圖像縮略圖(我有縮略圖URL從服務器獲取默認圖像加載程序顯示默認圖像圖標,直到縮略圖不可用)。

當有其他文件類型如音頻,視頻.....或文件需要顯示該圖標。

當我顯示列表時,它顯示相關文件的正確圖標。 但此刻我嘗試啓動滾動和背景我的縮略圖從服務器加載,當從服務器我正在從服務器的圖像,並顯示該位圖的縮略圖會像由於文件夾或音樂文件的圖標,其它類型文件顯示縮略圖位圖以查看列表視圖的重用。 這種錯位是從服務器獲取圖像時發生。

任何人都可以請我建議我如何克服這個問題。下面 是我getview()我的列表視圖的方法。

公共視圖getView(INT位置,查看convertView,父的ViewGroup){

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在其他部分也標記。

....

其他 {

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

裏面ImageLoader的,當新的圖像被下載,你的新圖像設置爲viewHolder之前,請檢查是否有正確的標籤。