从独立存储中延迟加载列表框图像

2023-11-25

我有很多图像存储在独立存储中,并希望将它们显示在列表框中。但是,我不希望立即加载所有图像,而是延迟加载。因此,只有当用户滚动查看新项目时,才应加载图像。我还想使用数据绑定来提供列表项的数据和图像。

在测试中,我所做的所有图像总是立即立即加载,所以我不确定是否可以使用默认值实现这种延迟加载ListBox和数据绑定。它可以?


您可以使用标准列表框通过数据绑定“延迟加载”您的项目。这里的关键词是“数据虚拟化”。您必须将 IList 实现到要进行数据绑定的类。仅针对当前可见的项目和接下来计算的 ~2 个屏幕调用索引器方法。这也是您应该为项目布局使用固定大小的网格,而不是根据所有包含的项目计算高度的堆栈面板的原因(性能!)。

您不必实现所有 IList 成员,只需实现几个即可。这是一个例子:

    public class MyVirtualList : IList {
    private List<string> tmpList;

    public MyVirtualList(List<string> mydata) {
        tmpList = new List<string>();
        if (mydata == null || mydata.Count <= 0) return;
        foreach (var item in mydata)
            tmpList.Add(item);
    }

    public int Count {
        get { return tmpList != null ? tmpList.Count : 0; }
    }

    public object this[int index] {
        get {
            Debug.WriteLine("Just requested item #" + index);
            return tmpList[index];
        }
        set {
            throw new NotImplementedException();
        }
    }

    public int IndexOf(object value) {
        return tmpList.IndexOf(value as string);
    }

    public int Add(object value) {
        tmpList.Add(value as string);
        return Count - 1;
    }

    #region not implemented methods
    public void Clear() {
        throw new NotImplementedException();
    }

    public bool Contains(object value) {
        throw new NotImplementedException();
    }

    public void Insert(int index, object value) {
        throw new NotImplementedException();
    }

    public bool IsFixedSize {
        get { throw new NotImplementedException(); }
    }

    public bool IsReadOnly {
        get { throw new NotImplementedException(); }
    }

    public void Remove(object value) {
        throw new NotImplementedException();
    }

    public void RemoveAt(int index) {
        throw new NotImplementedException();
    }

    public void CopyTo(Array array, int index) {
        throw new NotImplementedException();
    }

    public bool IsSynchronized {
        get { throw new NotImplementedException(); }
    }

    public object SyncRoot {
        get { throw new NotImplementedException(); }
    }

    public IEnumerator GetEnumerator() {
        throw new NotImplementedException();
    }
    #endregion
}

调试时,您可以看到并非所有项目都会立即加载,而是仅在需要时加载(请参阅 Debug.WriteLine())。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从独立存储中延迟加载列表框图像 的相关文章

  • 在本地 UIWebView 中使用 Retina 图像

    由于某种原因 我无法让 UIWebView 与我的新 Retina 图像 很好地配合 问题 一步一步 我正在从捆绑包中加载一系列 HTML 帮助文件 如果是 iPhone 4 我的代码会加载不同的 HTML 文件 LWERetinaUtil
  • Tiff 的 getImageWritersByFormatName 中存在问题。获取图像作家

    我正在尝试将 PDF 转换为 tiff 图像 我使用以下代码按格式获取图像编写器 Iterator
  • 在 PowerShell 中提取 EXIF 数据的简单方法?

    我一直在研究使用 PowerShell 提取 EXIF 数据的各种方法 但到目前为止我发现它相当复杂 一些here http blog cincura net 233463 renaming files based on exif data
  • UIEdgeInsets 定位文本/图像问题

    我尝试做一个UIButton图像位于文本上方 所以我使用以下代码 UIButton btn UIButton buttonWithType UIButtonTypeCustom btn frame CGRectMake x y 140 14
  • 延迟加载:Observable 未订阅

    在我的 Angular 应用程序中 我有一个父组件 控制台 组件 html div class main div
  • “imagecolorat”和透明度

    如何才能获得透明度上一个像素的值image imagecolorat 仅选取图像中指定位置的像素颜色索引 通过该索引 我可以获取 RGB 值 但不能获取透明值 希望您理解 并提前感谢您 解决方案可能如下 colorIndex imageco
  • HTTP 重定向图像可以吗?

    返回图片资源时返回301 302 303代码可以吗 我过去曾这样做过 而且似乎有效 这是好的做法吗 它与大多数浏览器兼容吗 是的 您可以重定向图像 浏览器将遵循重定向 但出于性能原因 您通常希望将重定向保持在最低限度 因为每个重定向都需要单
  • 如何获取 android.widget.ImageView 的宽度和高度?

    ImageView Actual image 60px height of ImageView
  • 如何缩放图像的一部分并插入到 matplotlib 中的同一图中

    我想缩放数据 图像的一部分并将其绘制在同一个图中 看起来有点像这个图 是否可以在同一图中插入缩放图像的一部分 我认为可以用子图绘制另一个图形 但它绘制了两个不同的图形 我还阅读了添加补丁以插入矩形 圆形 但不确定将图像的一部分插入到图中是否
  • PHP 中的 imagecolortransparent 不起作用

    我想改变图像中的白色 http www arso gov si vreme napovedi 20in 20podatki radar gif http www arso gov si vreme napovedi 20in 20podat
  • ASP.Net MVC 3,复杂对象和延迟加载

    首先 我是 ASP Net MVC 3 的新手 而且我也在使用 EF 4 1 我有一个复杂的对象 类似于包含类别对象的产品对象 所以我们有 Product CategoryId Product Category 和一些额外的属性 我还有一个
  • 如何在 WP7 应用程序磁贴中隐藏应用程序标题

    我不想在 Windows Phone 7 的磁贴中显示应用程序名称 就像 Netflix 或 Facebook 应用程序那样 但当我尝试将其设置为空 甚至是空白区域 时 Visual Studio 抱怨标题为空不允许 知道如何实现这一目标吗
  • BIRT 不显示 base64 编码的图像

    我想将图像包含到 BIRT 报告中 图像应由 XML 数据源 base64 编码 给出 但XML数据源不支持Blob数据类型 我找到了一个很好的答案这个 BIRT 问题 https stackoverflow com questions 2
  • 如何从 url Codenameone 创建图像

    我需要从具有图像 url 的字符串创建一个新的 Image 实例 E g http maps gstatic com mapfiles place api icons restaurant 71 png http maps gstatic
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 每页上的进度条

    我需要一个进度条来显示在大多数 如果不是所有 页面上 有没有一个好方法可以轻松让进度条出现在所有页面上 我有一个基页面类 我的所有页面都继承自该基页面类 我正在考虑将进度条动态添加到基类中的每个页面 但不知道如何做到这一点 我可以让基本页面
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • Java:ImageIcon 与 Image 的区别

    谁能以菜鸟的方式向我解释一下两者之间有什么区别图像图标 and ImageJava 中的类 对象 谢谢 它们的性质和应用是不同的 Image http docs oracle com javase 6 docs api java awt I
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM

随机推荐