如何在android中的列表视图中实现分页

时间:2012-05-14 12:59:40

标签: android

如何在android的列表视图中实现分页?我必须每页显示10条记录。如果用户单击下一个按钮,我必须显示另外10条记录,依此类推。 谁能告诉我怎么做?

由于

3 个答案:

答案 0 :(得分:0)

只需将前10个项目添加到适配器并显示即可。如果您的用户单击下一步,请更改适配器内的数据并调用notifydatasetchanged()。这将使用新项重新加载列表。 但我认为只展示一些项目而不是所有可能的项目并不是一个非常好的设计。个人而言,这会让我发疯。

答案 1 :(得分:0)

制作自定义适配器。使用Listview填充ArrayList,然后将10个项目添加到ArrrayList并致电adapter.notfiyDataSetChange()。当用户点击下一个按钮时,从ArrrayList中删除前十个项目,然后添加下一个项目,然后再次拨打adapter.notfiyDataSetChange()

答案 2 :(得分:0)

尝试执行以下步骤: -

首先,你必须在listView中提供按钮,用户可以使用该按钮加载下面的10条记录,如下所示: -

//LoadMore Button
         Button btnLoadMore = new Button(this);
         btnLoadMore.setText("Load More");

         //Adding Load More button to listview at bottom
         lview.addFooterView(btnLoadMore);

并使用自定义采用者: -

adapter = new myAdapter(this, record1, record2, stringArray);
         lview.setAdapter(adapter);

现在

/**
          * Listening to Load More button click event
          * */
         btnLoadMore.setOnClickListener(new View.OnClickListener() {

             public void onClick(View arg0) {
                 // Starting a new async task
                 new loadMoreListView().execute();
             }
         }

然后使用

    /**
             * Async Task that send a request to url
             * Gets new list view data
             * Appends to list view
             * */
            private class loadMoreListView extends AsyncTask<Void, Void, Void> {

                       protected Void doInBackground(Void... unused) {
                runOnUiThread(new Runnable() {
                    public void run() {

                                 (put your logic for load data)

                //get listview current position - used to maintain scroll position
                        int currentPosition = lview.getFirstVisiblePosition();

    adapter = new myAdapter(NewsActivity.this, record1, record2, stringArray);
                      lview.setAdapter(adapter);

        // Setting new scroll position
         lview.setSelectionFromTop(currentPosition + 1, 0);

        }               
    });

    return (null);
}

希望这会对你有帮助......