Membuat Loadmore Infinite Scroll pada RecyclerView Android

https://medium.com/sketch-app-sources/infinity-logo-part-2-sketch-851708b8e141

Halo bro, dalam sebuah development Android apps tentunya tidak lepas dalam mengonsumsi sebuah data, yang tidak jarang dikonsumsi kedalam bentuk list , entah itu ListView, Table, atau Recyclerview.

sangat tidak mungkin ketika kita memiliki data dengan jumlah yang banyak harus mengkonsumsi data tersebut secara banyak pada saat yang sama. tentunya akan memakan banyak source memori sampai kuota pengguna aplikasi kita juga harus terkuras. ini jadi salah satu pokok utama jika Anda tidak ingin kehilangan pengguna aplikasi.

nah, salah satu caranya adalah dengan membuat loadmore, ditutorial yang saya tulis penggunaan loadmore tidak menggunakan button ataupun komponen tambahan, tetapi memanfaatkan methods yang ada pada RecyclerView itu sendiri blablabla. sebuah method bawaan yang mendeteksi gesture scrolldown saat user melihat list data . lewat gesture inilah kita akan memanfaatkan untuk mengambil data pada page selanjutnya.

sebelumnya, buat class bernama EndlessOnScrollListener.java

public abstract class EndlessOnScrollListener extends RecyclerView.OnScrollListener {
private int mPreviousTotal = 0;
private boolean mLoading = true;

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = recyclerView.getChildCount();
int totalItemCount = recyclerView.getLayoutManager().getItemCount();
int firstVisibleItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
if (mLoading) {
if (totalItemCount > mPreviousTotal) {
mLoading = false;
mPreviousTotal = totalItemCount;
}
}
int visibleThreshold = 5;
if (!mLoading && (totalItemCount - visibleItemCount)
<= (firstVisibleItem + visibleThreshold)) {
onLoadMore();
mLoading = true;
}
}

public abstract void onLoadMore();

}

kelas diatas sebenarnya kelas yang extends dengan methods yang ada di RecyclerView itu tadi, namun dibuat terpisah agar dapat digunakan pula di recyclerview yang lain agar lebih praktis.

Cara menggunakannya, misalkan saya mempunya komponen RecyclerView

RecyclerView news_list = (RecyclerView) findViewById(R.id.news_list)

nantinya tinggal ditambahkan action methods pada komponen tersebut yaitu addOnScrollListener

news_list.addOnScrollListener(scrollData(pagenumber));

dimana disitu terdapat method bernama scrollData dan parameter pagenumber, pagenumber ini adalah parameter untuk mengambil page ke berapa dalam sebuah API.

private EndlessOnScrollListener scrollData(String page) {
return new EndlessOnScrollListener() {
@Override
public void onLoadMore() {
//masukan disini methods atau action mengambil data baru
//presenter.getDataNews(page,"","desc");
}
};
}

Selesai sudah, dan semoga bermanfaat :). jangan lupa Clapnya!