Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ArrayAdapter的getView()方法中只下载一次图像_Android_Listview_Android Arrayadapter - Fatal编程技术网

Android 在ArrayAdapter的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

我有一个从url下载的图像列表(带有描述)。在我将列表重新滚动到顶部之前,一切都正常。再次拍摄照片是因为(我猜)再次调用了getView()方法。如何使图像只下载一次?低级阵列适配器

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,只需两个步骤。

检查此库:您可以在加载时使用上述库缓存图像。检查此