Android ListView:仅在滚动上加载项目

Android ListView:仅在滚动上加载项目,android,listview,Android,Listview,我有一个用于列表视图的自定义适配器。它有3个字段:一个缩略图和两个文本字段 布局膨胀后,将从外部服务器下载缩略图 如何更改功能,使图像仅在用户向下滚动时下载 @Override public View getView(int position, View convertView, ViewGroup parent) { // Inflate the layout LayoutInflater inflater = (LayoutInflater) context.getSyst

我有一个用于列表视图的自定义适配器。它有3个字段:一个缩略图和两个文本字段

布局膨胀后,将从外部服务器下载缩略图

如何更改功能,使图像仅在用户向下滚动时下载

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    // Inflate the layout
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.list_single, parent, false);

    ImageView image = (ImageView) rowView.findViewById(R.id.picture);
    TextView firstline = (TextView) rowView.findViewById(R.id.firstline);
    TextView secondline = (TextView) rowView.findViewById(R.id.secondline);         

    // Get information about the report
    AnimalLocationLog current = objects.get(position);

    // Get all the important information
    String species = current.getSpecies();
    String sanitizedSpecies = MiscHelpers.sanitizeString(species);
    int reportId = objects.get(position).getTrackerId();

    // Construct the URL to the image
    String imageLocation = websiteUrl + sanitizedSpecies + separator + reportId + extension;

    // Display user report          
    downloader.download(imageLocation, image);          
    firstline.setText(species);
    secondline.setText("Spotted " + current.getDateTime().toString("yyyy-MM-dd H:m"));

    return rowView;
}

使用ListView.setOnScrollListener向ListView添加一个,并使用ScrollListener.onScroll方法进行下载。您可以使用ListView.getLastVisiblePosition来确定哪些列表项可见,哪些不可见。

这段代码似乎已经可以满足您的要求。@AdamS是对的,只有当ListView需要屏幕上的视图时才会调用getView。谢谢@AdamS-请发布一个答案,我会接受它