Последовательность данных из SQLite изменилась при отображении данных в RecyclerView

Я сохранил данные в базе данных SQLite. Мне нужно отобразить эти данные из базы данных в RecyclerView. Но в первый раз, когда данные извлекаются и отображаются в RecyclerView, они извлекаются в Sequence, как хранятся в базе данных и устанавливаются в Recyclerview. Когда я пытаюсь получить те же данные из базы данных и установить на RecyclerView автоматически меняет последовательность. Это код для получения данных из базы данных SQLite.

public ArrayList<ReservationEntry> getDbReservation(){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT * FROM "+ RESERVATIONS;
        Cursor c=db.rawQuery(query,null,null);
        ArrayList<ReservationEntry> reserveList=new ArrayList<>();
        if (c.moveToFirst()){
            do{
                ReservationEntry entry=new ReservationEntry();
                entry.setName(c.getString(0));
                entry.setNoOfPeople(c.getString(1));
                entry.setTime(c.getString(2));
                entry.setDate(c.getString(3));
                entry.setBirthday(c.getString(4));
                entry.setAniversary(c.getString(5));
                reserveList.add(entry);
            }while (c.moveToNext());
        }
        return reserveList;

    }  

Это код для установки RecyclerViewAdapter

private void readDatabaseReservation(final ArrayList<ReservationEntry> dbList) {
        adapter=newReservationAdapter(dbList,getActivity().getApplicationContext());
        recyclerView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
}  

Как решить эту проблему?

Возможно, данные обновляются. Вы можете добавить заказ по предложению в запросе sql. Он не изменит порядок, пока не будут добавлены новые данные или не обновлен порядок столбцов.

Ashish Kudale 13.11.2018 08:36

ваша проблема решена?

Radesh 17.11.2018 15:23
0
2
30
1

Ответы 1

Вы должны добавить в свой адаптер эту функцию для изменения данных и вызова notifyDataSetChanged.

Так что добавьте это в свой адаптер

public void setData(ArrayList<ReservationEntry> dbList){
  this.yourListData = dbList;
  notifyDataSetChanged();
}

И используйте это так

private void readDatabaseReservation(final ArrayList<ReservationEntry> dbList) {
    adapter.setData(dbList);
} 

Надеюсь, это поможет. для получения дополнительной информации добавьте код адаптера

Другие вопросы по теме