#calendar #cursor #android-sqlite #android-cursor
#Календарь #android-sqlite #android-курсор
Вопрос:
Я хочу отображать другой текст при нажатии на каждую дату, я проверил журнал, и кажется, что оператор while не работает после того, как я нажму один раз .. есть идеи?
вот мой код
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int dayOfMonth) {
tapDate = year "/" (month 1) "/" dayOfMonth;
selectedDate.setText(tapDate);
Log.d(TAG, "onSelectedDayChange: tapDate" tapDate);
while (cursor.moveToNext()) {
item = new Shelf_items();
item.setBookTitle(cursor.getString(0));
item.setWriteDate(cursor.getString(1));
Log.d(TAG, "onSelectedDayChange: while runs");
if(item.getWriteDate().equals(tapDate)){
mShelf.add(item);
Log.d(TAG, "onSelectedDayChange: mshelf item" item);
for(Shelf_items i: mShelf){
i_result = i.getBookTitle() " / ";
}
f_result =i_resu<
Log.d(TAG, "onSelectedDayChange: for 문: " i_result);
}
bookName.setText(f_result);
}
cursor.close();
}
});
Ответ №1:
Если вы хотите снова прокрутить результирующий набор курсора, вам нужно перемотать курсор назад к началу. Замените
while (cursor.moveToNext()) {
...
}
с
if (cursor.moveToFirst()) {
do {
...
} while (cursor.moveToNext());
}
и удалите cursor.close()
, поскольку вы еще не закончили с курсором.
Комментарии:
1. Мне пришлось что-то настроить, но, спасибо, это работает! теперь я знаю, что курсор должен быть перемещен, если я хочу повторить цикл!!