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);
}