【发布时间】:2014-05-19 12:16:18
【问题描述】:
我正在使用列表视图来显示 android 文件,即显示来自服务器的文件夹和文件。
当我开始我的活动时,我可以在屏幕上看到我想要的列表。 我正在从服务器获取数据。 我想展示像
这样的结构当有图像文件需要显示图像缩略图时(我有从服务器获取的缩略图 URL,默认图像加载器显示默认图像图标,直到缩略图不可用)。
当有其他文件类型如音频、视频.....或文件需要显示该图标时。
当我显示列表时,它会显示相关文件的正确图标。 但是,当我尝试开始滚动时,在后台我的缩略图正在从服务器加载,当我从服务器获取图像并显示该位图缩略图时,它将以其他文件类型(如文件夹或音乐文件图标)显示缩略图位图由于查看列表视图的复用。 从服务器获取图像时会发生这种错误。
任何人都可以建议我如何克服这个问题。 下面是我的 listview 的 getview() 方法。
public View getView(int position, View convertView, ViewGroup parent){
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;
}
【问题讨论】:
标签: android-listview imageview custom-adapter