如何限制ListAdapter中的数据并在向上滚动时显示更多?

时间:2016-06-30 07:15:30

标签: android listview listadapter

我目前正在创建一个聊天应用程序。我尝试了不同的解决方案,但我无法让它们发挥作用。这是我目前的代码:

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项的数据?当我向上滚动时,我将如何检索更多数据?

提前致谢。

3 个答案:

答案 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);

希望它有效..(: