【问题标题】:Android dynamic listview from sqlite来自 sqlite 的 Android 动态列表视图
【发布时间】:2013-11-22 10:18:06
【问题描述】:

我有一个从 SQLite 数据库填充的 ListView。数据库有 300,000 多行,列表视图是在从不同的东西(例如,姓名、姓氏、年龄和其他一般数据库的东西)搜索后填充的。

它适用于小的搜索返回,但如果搜索返回超过 2,000 个结果,则应用程序会冻结并停止。

我想做的是从数据库返回 100 个结果,然后当它滚动到列表底部时,它会返回光标并加载另一个 100。 我有一个动态列表正在工作,但它仍然冻结,因为它仍在搜索 1000 多个结果并且只显示 100 个结果。 这是一些伪代码(因为列表视图有 500 多行,根据搜索的内容,有大量的 if else 语句)

    public class example extends Activity implements OnScrollListener{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.showlist);
        //It opens database here
        ListView list = (ListView) findViewById(R.id.listView1);
            if(nameOnly is searched){
                //adds data to list with array adapter here
                //return 100 results and put it in a list
            }else if(name and surname is searched){
                //adds data to list with array adapter here
                //return 100 results and put it in a list
            }else if (surname only searced){
                //adds data to list with array adapter here
                //return 100 results and put it in a list
            }
    }
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, 
    int visibleItemCount,     int totalItemCount) {
    boolean load = firstVisibleItem+visibleItemCount>=totalItemCount;
    if(load){
        //This is where i want to set it to return 
    //the next 100 and add it to the list from the if else statements
    }       
}
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
}   
    }

所以我想尝试再次在 OnScroll 中移动光标并在 SQLite 光标中使用 OFFSET 但它不起作用。我现在不知道这是不是最好的方法,所以任何想法都会受到赞赏!

【问题讨论】:

  • 你可以使用延迟加载技术来做到这一点。
  • 谢谢,我会调查一下,没听说过这个词,因为我对 android 还很陌生
  • 您可以在后台线程中运行数据库查询,并在获取并准备好结果时更新列表视图。在此之前,您可以在 UI 中显示 loading..,例如 lh4.googleusercontent.com/_ODdyLCCXPpQ/TZwr-_i8BHI/AAAAAAAAw08/… AsyncTask 会有所帮助。

标签: android sqlite listview android-listview onscroll


【解决方案1】:

由于您有很多记录,因此您可以做出一些选择。 您可以使用异步任务来加载记录或加载更多设施。

要加载更多内容,您可以查看以下链接 List with load more

您还可以查看异步任务 Async task

【讨论】:

    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多