我目前正在创建一个聊天应用程序。我尝试了不同的解决方案,但我无法让它们发挥作用。这是我目前的代码:
public void callListView() {
// GET USER LIST
setListAdapter (new SimpleAdapter(
Messages.this, ListOfMsg,
R.layout.messages_list_item, new String[] {
"name",
"message"
},
new int[] {
R.id.sname,
R.id.message
}
));
}
如何限制我最多只能获得25项的数据?当我向上滚动时,我将如何检索更多数据?
提前致谢。
答案 0 :(得分:0)
int totalItems = 100;
int currentPage = 0;
int pageSize = 10;
int numPages = (int) Math.ceil((float) totalItems/pageSize);
ArrayList<String> items = new ArrayList<String>(totalItems);
List<String> page = items.subList(currentPage, pageSize);
答案 1 :(得分:0)
您可以使用以下查询
访问有限的数据SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows] OFFSET [row num]
然后在
listView.setOnScrollListener
在滚动方法
上 public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount != 0) {
//here you can fire query to get next data and attached to listview
}
}
您可以从上面的查询中获取下一个数据并添加到分页视图中,例如分页。
答案 2 :(得分:0)
我使用了RecyclerView OnScrollListener。
LinearLayoutManager llm;
ArrayList posts;
然后:
RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (!loading && llm.getChildCount() != 0 &&
llm.findFirstCompletelyVisibleItemPosition() !=0 && //to ensure that the last item and the first item are not both visible
llm.findLastVisibleItemPosition() == posts.size() - 1) {
//Load Here Your Next Twenty Five Chat
}
super.onScrollStateChanged(recyclerView, newState);
}
};
然后将侦听器添加到RecyclerView,如下所示
recycler.addOnScrollListener(scrollListener);
希望它有效..(: