Имеется такой вот код, он выводит информацию из SQLite в лист. И все работает, нооо.. самая первая запись не выводится, оно ее просто пропускает и начинает со второй
final SQLiteDatabase sqLiteDatabase = dataBase.getReadableDatabase();
Cursor cursor = sqLiteDatabase.query("Messeg",null,null,null,null,null,null);
if(cursor.moveToFirst()){
// while (cursor.moveToNext()){
while (cursor.moveToNext()){
UpList.add(0, new DialogSaveData(
cursor.getString(cursor.getColumnIndex("fr")),
cursor.getString(cursor.getColumnIndex("fr")),
cursor.getString(cursor.getColumnIndex("data"))
));
CastomDialog adapter = new CastomDialog(MainActivity.this, R.layout.castom_dialog_list, UpList);
//присваиваем адаптер списку
listChat.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}else {
dataMess.setText("no table");
}
}
Путем тыка подозрение пало на строку while (cursor.moveToNext()){
т.к если убрать этот цикл то в лист выведется только первая запись.
Подскажите пожалуйста, как это можно исправить?
Изначально Cursor
стоит на позиции ДО первой записи.
В строке
if(cursor.moveToFirst()){
вы его передвигаете на первую запись, и следующий сразу за ним
while (cursor.moveToNext()){
передвигает его на вторую запись.
В Вашем случае строка
if(cursor.moveToFirst()){
не нужна, а для обработки проблемы с пустым результирующим набором сделайте проверку на количество элементов в UpList
после цикла
Присваивайте первый элемент до входа в цикл while().
1) cursor.moveToFirst();
2) присвоить первый элемент в list
3) цикл cursor.moveToNext() по остальным элементам курсора.
А такой вариант
final int record = cursor.getCount(); // Количество записей в таблице базы данных
final int columnCount = cursor.getColumnCount(); // Количество полей в таблице
cursor.moveToFirst();
test = new ArrayList<>();
if (record == 0) {
Toast toast = Toast.makeText(ReadRecorsDB.this, "Записи в базе отсутствую, добавьте новую запись", Toast.LENGTH_LONG);
toast.show();
} else>
{
while (!cursor.isAfterLast()) {
test.add(cursor.getString(i));
i++;
if (i == columnCount) {
cursor.moveToNext();
i = 0;
}
cursor.close();
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Сайт написан на чистых сервлетах, никаких фреймворков не используетсяПри открытии любой страницы сервлет этой страницы отрабатывает 2 раза
Господа программисты, кто то сможет подсказать по считыванию штрих-кода? Как в приложении Сбербанка сделали считывание квитанции по налогам?
Имеется микросервисное приложениеОдин из сервисов производит arp сканирование окружающей локальной сети с помощью скрипта