Android 在ArrayAdapter的getView()方法中只下载一次图像
我有一个从url下载的图像列表(带有描述)。在我将列表重新滚动到顶部之前,一切都正常。再次拍摄照片是因为(我猜)再次调用了getView()方法。如何使图像只下载一次?低级阵列适配器Android 在ArrayAdapter的getView()方法中只下载一次图像,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我有一个从url下载的图像列表(带有描述)。在我将列表重新滚动到顶部之前,一切都正常。再次拍摄照片是因为(我猜)再次调用了getView()方法。如何使图像只下载一次?低级阵列适配器 public class ImageWithTwoTextArrayAdapter extends ArrayAdapter<ImageWithTwoText> { public final static String TITLE_KEY = "title"; public final
public class ImageWithTwoTextArrayAdapter extends
ArrayAdapter<ImageWithTwoText> {
public final static String TITLE_KEY = "title";
public final static String SUBTITLE_KEY = "subtitle";
public final static String IMAGE_RESOURCE_KEY = "imageResources";
private final List<ImageWithTwoText> imageWithTwoTextList;
private final Context context;
TextView titleView;
TextView subTitleView;
ImageView imageView;
/**
* Class constructor
*
* @param context
*/
public ImageWithTwoTextArrayAdapter(Context context,
List<ImageWithTwoText> imageWithTwoTextList) {
super(context, R.layout.row_view, imageWithTwoTextList);
this.context = context;
this.imageWithTwoTextList = imageWithTwoTextList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row_view, parent, false);
ImageWithTwoText currentElement = imageWithTwoTextList.get(position);
titleView = (TextView) rowView.findViewById(R.id.title);
subTitleView = (TextView) rowView.findViewById(R.id.subtitle);
imageView = (ImageView) rowView.findViewById(R.id.icon);
titleView.setText(currentElement.getTitle());
subTitleView.setText(currentElement.getSubTitle());
if (currentElement.getImageResource() != null) {
imageView.setImageResource(currentElement.getImageResource());
} else {
if (imageView.getDrawable() == null) {
new DownloadThumbnailTask(imageView).execute(currentElement
.getImageURI());
}
}
return rowView;
}
}
具有两个TextArrayAdapter扩展的公共类映像
阵列适配器{
公共最终静态字符串TITLE\u KEY=“TITLE”;
公共最终静态字符串SUBTITLE\u KEY=“SUBTITLE”;
公共最终静态字符串IMAGE\u RESOURCE\u KEY=“imageResources”;
带有两个文本列表的私有最终列表图像;
私人最终语境;
文本视图标题视图;
文本视图;
图像视图图像视图;
/**
*类构造函数
*
*@param上下文
*/
带有TwoTextArrayAdapter(上下文、,
使用两个文本列表列出图像(列表){
super(上下文、R.layout.row_视图、带有两个文本列表的图像);
this.context=上下文;
this.imageWithTwoTextList=imageWithTwoTextList;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.row_视图,父视图,false);
ImageWithTwoText currentElement=imageWithTwoTextList.get(位置);
titleView=(TextView)rowView.findViewById(R.id.title);
subTitleView=(TextView)rowView.findViewById(R.id.subtitle);
imageView=(imageView)rowView.findViewById(R.id.icon);
titleView.setText(currentElement.getTitle());
setText(currentElement.getSubTitle());
如果(currentElement.getImageResource()!=null){
setImageResource(currentElement.getImageResource());
}否则{
if(imageView.getDrawable()==null){
新建下载ThumbnailTask(imageView).execute(currentElement
.getImageURI());
}
}
返回行视图;
}
}
使用教程来缓存称为延迟加载的图像,我正在使用它,它的工作原理类似于charm,只需两个步骤。检查此库:您可以在加载时使用上述库缓存图像。检查此