【发布时间】: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