【问题标题】:pre-create row views before creating a listview activity?在创建列表视图活动之前预先创建行视图?
【发布时间】:2011-04-02 08:22:14
【问题描述】:

我有一个活动,其中有两个选项卡和一个列表视图。我想让活动的加载和打开速度非常快。我担心填充两个列表选项卡会导致应用程序在该活动打开时滞后。我正在考虑在我的应用程序的初始屏幕期间从我的数据库加载数据并创建一组视图,然后在启动该活动后简单地将它们扔到列表视图中。这值得努力吗?我似乎找不到一种简单的方法来做这样的事情。我假设我需要自定义阵列适配器。有没有人有做这样的事情的经验?或者你会建议坚持在 onCreate() 中使用光标适配器的标准吗?

【问题讨论】:

    标签: android listview tabs listactivity tabview


    【解决方案1】:

    问题是您需要如此快速地加载它们的原因是什么。一般来说,可以非常快地从数据库中读取项目。无论如何,您应该在AsyncTask 中执行此操作,这样您就不会使用此操作阻塞 UI 线程。

    另一点是,如果您想在 ListView 中显示数据库中的项目,则不应一次读取所有项目并将它们放入绑定到列表的数组中。相反,您应该使用从数据库查询中获得的光标并将其绑定到 SimpleCursorAdapterCursorAdapter,然后将其绑定到 ListView。 CursorAdapter 经过优化,可以根据需要从 Cursor 读取数据。请记住,在 Android 上创建对象是一项昂贵的操作,如果不必要,应避免使用。因此,如果您的列表非常大并且用户不会总是滚动浏览整个列表,那么为什么要预加载所有项目并为其创建视图呢?

    您当然可以在初始屏幕期间预查询数据库并将返回的游标存储在某处,直到您需要它们为止。

    但正如我在开始时所说的,我不知道您的应用程序是做什么的,因此很难说是否值得努力。

    【讨论】:

    • 感谢您的回答。在真正理解列表适配器的工作方式之前,我专注于优化。使用您描述的方法是有意义的。我现在使用的方式是在启动屏幕期间使用异步任务加载按字母顺序组织的光标。我使用简单的光标适配器设置其余部分。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2013-07-17
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多