Saya memiliki RecyclerView yang di dalam SwipeRefreshLayout yang akan mendapatkan Post JSON dari server php saya.

Jadi situasinya sekarang adalah, saya hanya memiliki 5 postdi database saya. Jadi ketika pertama kali saya meluncurkan RecyclerView, itu menunjukkan 5 post, ini tidak masalah.

Masalah utama sekarang adalah, setiap kali saya menarik SwipeRefreshLayout itu menarik 5 post yang sama untuk ditampilkan di RecyclerView lagi, jadi sekarang total 10 item di dalam RecyclerView ,dan posting yang sama muncul 2 kali. Ketika saya taruh lagi, itu akan muncul sekali lagi, jadi total sekarang 15 item masing-masing post muncul 3 kali. Jadi ini akan muncul tak terhingga kali.

Saya mencoba jawaban dari ini pertanyaan yang Override 2 metode berikut tetapi item yang sama masih muncul.

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
   return position;
}

Jadi yang saya inginkan adalah, jika hanya ada 5 posts yang tersedia di database, itu hanya menampilkan 5 posts di RecyclerView. Ketika pengguna menarik SwipeRefreshLayout itu tidak akan ditampilkan 5 posts yang sama sekali lagi, tetapi jangan beri tahu pengguna lagi pos yang lebih baru.

Bagaimana saya bisa memecahkan masalah ini?

2
ken 13 Maret 2017, 14:48

2 jawaban

Jawaban Terbaik

Hapus adpater saat pengguna menarik swiper dan memuat ulang data baru lagi untuk menghindari pengulangan

Coba gunakan metode ini untuk menghapus data:

public void clear() {
        int size = this.myList.size();
        if (size > 0) {
            for (int i = 0; i < size; i++) {
                this.myList.remove(0);
            }

            this.notifyItemRangeRemoved(0, size);
        }
    }
0
Mohamed AbdelraZek 13 Maret 2017, 12:02

Coba hapus semua item dari array sebelum membaca JSON

0
ali hassoun 13 Maret 2017, 12:01