Ada cara yang lebih mudah untuk menonaktifkan pengguliran (secara teknis ini lebih tepatnya mencegat peristiwa pengguliran dan mengakhirinya ketika suatu kondisi terpenuhi), hanya menggunakan fungsionalitas standar. RecyclerViewmemiliki metode yang dipanggil addOnScrollListener(OnScrollListener listener), dan hanya dengan ini Anda dapat menghentikannya dari menggulir, seperti:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (viewModel.isItemSelected) {
recyclerView.stopScroll();
}
}
});
Kasus penggunaan:
Katakanlah Anda ingin menonaktifkan pengguliran ketika Anda mengklik salah satu item di dalamnya RecyclerViewsehingga Anda dapat melakukan beberapa tindakan dengannya, tanpa terganggu dengan menggulir secara tidak sengaja ke item lain, dan ketika Anda selesai melakukannya, cukup klik pada item lagi untuk mengaktifkan gulir. Untuk itu, Anda ingin melampirkan OnClickListenerke setiap item di dalamnya RecyclerView, jadi ketika Anda mengklik item, itu akan beralih isItemSelecteddari falseke true. Dengan cara ini ketika Anda mencoba untuk menggulir, RecyclerViewakan secara otomatis memanggil metode onScrollStateChangeddan sejak isItemSelecteddiatur ke true, itu akan segera berhenti, sebelum RecyclerViewmendapat kesempatan, yah ... untuk menggulir.
Catatan: untuk kegunaan yang lebih baik, coba gunakan GestureListeneralih-alih OnClickListeneruntuk mencegah accidentalklik.
RecyclerViewjika Anda tidak ingin menggulir?