Pagination in ListView

step 1: create activity ListViewPaginationActivity:

Step 2: create activity_listview_pagination.xml

Step 3: Create interface DetailsAPI.

Step 4: Give internet permission in manifest file.

Step 5: Check the output.

ListViewPaginationActivity:

public class ListViewPaginationActivity extends AppCompatActivity {

private ListView mListView;

private ArrayAdapter<String> countyAdapter;

private List<String> countyList = new ArrayList<>();

private String Root_url = "http://codex.scienstechnologies.com/PetLuvs/api/";

private DetailsAPI api;

private int currentPage = 0;

private String TAG = "LokeshLVPA";

private boolean loading = true;

private int previousTotal = 0;

private int visibleThreshold = 5;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_list_view_pagination);

mListView = (ListView) findViewById(R.id.activity_list_view_pagination_lv);

countyAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,countyList);

mListView.setAdapter(countyAdapter);

mListView.setOnScrollListener(new AbsListView.OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView absListView, int i) {

}

@Override

public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

if (loading) {

if (totalItemCount > previousTotal) {

loading = false;

previousTotal = totalItemCount;

currentPage++;

}

}

if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {

callAPI();

loading = true;

}

}

});

RestAdapter adapter = new RestAdapter.Builder().setEndpoint(Root_url).build();

api = adapter.create(DetailsAPI.class);

callAPI();

}

public void callAPI(){

api.insertUser(currentPage, new Callback<JsonArray>() {

@Override

public void success(JsonArray jsonArray, Response response) {

for (int i = 0; i < jsonArray.size(); i++) {

JsonObject jsonObject = jsonArray.get(i).getAsJsonObject();

countyList.add(jsonObject.get("country").getAsString());

}

countyAdapter.notifyDataSetChanged();

}

@Override

public void failure(RetrofitError error) {

Toast.makeText(ListViewPaginationActivity.this, "Internet connection error!", Toast.LENGTH_SHORT).show();

Log.d(TAG, "failure: retro"+error.getMessage());

}

});

}

}

activity_listview_pagination.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_list_view_pagination"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="sciens.com.spinnerpagination.ListViewPaginationActivity">

<ListView

android:id="@+id/activity_list_view_pagination_lv"

android:layout_width="match_parent"

android:layout_height="match_parent">

</ListView>

</RelativeLayout>

DetailsAPI:

public interface DetailsAPI {

@GET("/countries")

void insertUser(@Query("page") int mPage, Callback<JsonArray> jsonObjectCallback);

}

pagination in listivew image