【问题标题】:How to implement ListView Pagination from SQLite database in Android?如何在 Android 中从 SQLite 数据库实现 ListView 分页?
【发布时间】:2016-07-16 12:53:19
【问题描述】:

我想从我已经完成的 SQLite 数据库中实现 List-View。但是现在我想在列表视图 setOnScrollListener 上实现分页。第一次我显示前 50 条记录之后,当我在列表末尾滚动时,运行进度条几秒钟,然后在停止进度条之后再显示下 50 条记录附加到列表中。自从在列表视图分页上工作了 5 天以来,我尝试了很多时间,但它无法正常工作。有人可以帮我解决这个问题吗?

这是我的代码。

listView.addFooterView(footer);
        // Implementing scroll refresh
        listView.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView absListView, int i) {
            }

            @Override
            public void onScroll(AbsListView absListView, int firstItem, int visibleItemCount, final int totalItems) {
                //Log.e("Get position", "--firstItem:" + firstItem + "  visibleItemCount:" + visibleItemCount + "  totalItems:" + totalItems + "  pageCount:" + pageCount);
                int total = firstItem + visibleItemCount;

               Log.e("", "onScroll LocalPages=" + LocalPages);
                // Total array list i have so it
                if (pageCount < LocalPages) {

                    if (total == totalItems) {

                        // Execute some code after 8 seconds have passed
                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable()
                        {
                            public void run()
                            {
                                listView.addFooterView(footer);
                                OFFSET = pageCount * 50 ;
                                //Log.e("","After OFFSET pageCount =" + pageCount + "  OFFSET value ="+OFFSET);
                                List<All_Post> allDesc = dbhelper.getAllDescriptions(OFFSET);
                                for (All_Post all_Post : allDesc)
                                {
                                    descArray.add(all_Post);
                                }
                                if(adapter != null)
                                {
                                    adapter.notifyDataSetChanged();
                                    listView.setAdapter(adapter);
                                    listView.setSelection(totalItems);

                                    pageCount += 1;
                                    Log.e("","  pageCount =" + pageCount + " LocalPages="+LocalPages);

                                }
                            }
                        }, 2000);
                    }
                } else {
                    Log.e("hide footer", "footer hide");
                    listView.removeFooterView(footer);
                }
            }
        });

【问题讨论】:

  • “自从在列表视图分页上工作了 5 天以来,我尝试了很多时间,但它无法正常工作。”是在 3 月 23 日,你工作了 5 天,今天是 3 月 29 日,所以你现在工作了 10 多天,我已经给了你两个工作解决方案,所以如果你不这样做,你对 SO 有什么期望要接受吗?
  • 你可以通过 OnScrollListener 使用“拉刷新”
  • 是的,我知道。我现在不想使用 SimpleCursorAdapter。因为我已经使用了 Array-adapter 和很多代码,现在我无法更改。
  • @vaibhav rockstar : 是否可以通过 LIMIT 和 OFFSET 查询使用 pull 刷新
  • 好吧,你的选择,如果你想再和它战斗一周或一个月......

标签: android sqlite pagination


【解决方案1】:

您可以通过以下方法执行此操作。

                        // create one final list
                        final ArrayList<String> temp = new ArrayList<String>();
                        temp.addAll(previous_data);

                        // call fxn for getting new value
                        // call your database query

                        // add new data into list
                        temp.addAll(new_Data);
                        // intailize static list of adapter showing data
                        // add data into list.
                        ActivityName.MainList = temp;

                         mAdapter.notifyDataSetChanged();

还有你的代码...谢谢

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多