Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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 何时使用延迟加载,何时不使用。?_Android_Android Listview_Android Lazyloading - Fatal编程技术网

Android 何时使用延迟加载,何时不使用。?

Android 何时使用延迟加载,何时不使用。?,android,android-listview,android-lazyloading,Android,Android Listview,Android Lazyloading,数据库里有5000个名字。我希望所有这些名称都能膨胀到列表视图中。其中包含以下元素 图标图像(本地存储在Drawables中) 名字 以公里为单位的距离 我正在使用搜索筛选筛选此listView,如下所示: adapter.getFilter().filter(someText); adapter.sort(new Comparator<String>() { @Override public int compare

数据库里有5000个名字。我希望所有这些名称都能膨胀到列表视图中。其中包含以下元素

  • 图标图像(本地存储在Drawables中)
  • 名字
  • 以公里为单位的距离
  • 我正在使用搜索筛选筛选此listView,如下所示:

    adapter.getFilter().filter(someText);
    
    adapter.sort(new Comparator<String>() {
    
                    @Override
                    public int compare(String lhs, String rhs) {
                        return lhs.getPlaceName().compareTo(rhs.getPlaceName());
                    };
                });
    
    我还对listview进行排序,例如:按字母顺序(A-Z和Z-A)对listview名称进行排序。 排序是在listView适配器上完成的,如下所示:

    adapter.getFilter().filter(someText);
    
    adapter.sort(new Comparator<String>() {
    
                    @Override
                    public int compare(String lhs, String rhs) {
                        return lhs.getPlaceName().compareTo(rhs.getPlaceName());
                    };
                });
    
    adapter.sort(新的比较器(){
    @凌驾
    公共整数比较(字符串lhs、字符串rhs){
    返回lhs.getPlaceName().compareTo(rhs.getPlaceName());
    };
    });
    

    现在,考虑到适配器的性能,我很困惑是否要将名称延迟加载到listview(因为我有5000多个名称)。请建议。

    或者,您可以将数据存储在已排序的数据库中,然后应用延迟加载。
    因为尽管@Singularity建议的方法非常好,但最终可能只对块(比如说100块)进行排序,而不是对整个数据进行排序。此外,您还需要对这些块中的每个块进行排序。

    因为它是一个数据库,所以是否使用游标?据我所知,这本身就是延迟加载。在这种情况下,建议使用分页(例如Play store应用程序)。延迟加载前100个左右,并提供加载后100个或加载前100个操作(可能是在用户滚动到顶部或末端时)。推迟对您的查询进行筛选。@NickL我正在使用stORM:David M Chandler在Android上为SQLite开发的开源ORM,它将自动执行我的数据库事务,我只能访问Data access object.ie(我只能对其进行插入、删除和更新)。我不确定我是否可以在上面使用游标。?@Singularity您可以在listview Android中共享更多关于分页的信息吗?@Sureshchemalamudi我不确定您是否可以在正在使用的框架上使用游标,但即使这样,您仍然可以在SQLite数据库本身上使用游标?游标不需要ORM。我真正需要的是,无论我是执行搜索还是排序,它都应该一次应用于所有5000+项。如果我做了延迟加载,我能做到这一点吗?我想,将排序后的数据存储到数据库并检索回来可能是线程上的一项巨大工作。嗨,当然,延迟加载意味着在需要时加载项目。因此,我认为,如果你想对所有5000人进行排序,那么这并不能解决你的目的。另外,根据您的原始问题,我假设您有一个静态数据库,它在运行时没有构建。因此,建议先对其进行分类。如果您没有在运行时向ur db添加项,那么您可以事先对表进行排序,然后可以利用@Singularity建议的分页功能。如果有帮助,请告诉我。谢谢你的建议。我通过XML解析将值转储到数据库中。一旦这些值被转储,我将不再插入更多的值。我所做的只是将这些值填充到listview中,然后根据需要执行搜索和排序。确定。因此,U可以在解析时考虑插入排序(按排序顺序插入U-DB中的项)。底线是,如果您想使用UR案例中推荐的惰性加载(分页),那么U可能首先考虑对数据进行排序。在我看来,无论是否使用延迟加载,您都必须强制对数据进行排序,为什么不继续使用它并确保您的UI具有更好的响应性呢。