Delphi中的延迟加载列表框项

Delphi中的延迟加载列表框项,delphi,lazy-loading,vcl,delphi-xe8,tlistbox,Delphi,Lazy Loading,Vcl,Delphi Xe8,Tlistbox,我试图解析RSS提要并将其数据加载到列表框中。项目内容如下表所示: type TFeedItem = class private FTitle: string; FDescription: string; FLink: string; FImageUrl: string; public property Title: string read FTitle; property Description: string read FDescr

我试图解析RSS提要并将其数据加载到列表框中。项目内容如下表所示:

type
  TFeedItem = class
  private
    FTitle: string;
    FDescription: string;
    FLink: string;
    FImageUrl: string;
  public
    property Title: string read FTitle;
    property Description: string read FDescription;
    property Link: string read FLink;
    property ImageUrl: string read FImageUrl;
  end;
该列表是自定义绘制的,将显示每个项目中的所有上述字段。因为有100多个提要项,所以下载每个ImageUrl并将其显示在相应的列表项上需要很多时间。所以我想先拿前10件东西。当用户滚动到列表框的末尾时,获取接下来的10项,依此类推。实际上,我正在尝试实现Facebook和许多其他android应用程序在scroll to end事件上显示更多数据项的方式


谷歌搜索给出了安卓系统或windows手机的大部分搜索结果

为什么不使用虚拟列表框?@DavidHeffernan我想你没有正确理解这个问题。让我们假设,如果我为每个ImageUrl下载图像,其中包含100个项目的100kb图像大小,它将消耗更多的带宽,并且需要更多的时间。那么,为什么不下载xml,解析它并只显示前10项呢?这样,只会下载和显示10幅图像。一旦用户滚动到末尾,它将下载相同的xml,对其进行解析,但将附加下10项。11-20.当虚拟列表框要求更多时,您知道需要更新data@TomBrunberg:在虚拟列表框中,可以提前设置其
Count
属性。显示100项与显示1000项之间没有区别。因此,我将
计数设置为提要中的项目总数,并将XML细节缓存在某个地方。在
OnData
/
OnDrawItem
事件中,根据需要返回/显示缓存的文本。如果项目的映像尚未下载,请启动后台任务下载它(限制一次运行的活动下载次数)。完成后,更新缓存并使项目无效,以便它可以使用缓存的图像重新绘制。@RabiJayasawal:准确检测滚动活动的唯一方法是对列表框进行子类化并直接处理其消息。