поэтому я создал метод, возвращающий ArrayList класса, который я использую в моем проекте, проблема в том, что единственный элемент, добавляемый в ArrayList, является вторым в базе данных. Я знаю это, потому что я извлек файл БД и просмотрел его, а также «c.getCount()» возвращает значение 2.Курсор не движется в первую очередь?
Итак, я знаю, что моя БД содержит 2 записи, мой Курсор получает 2 записи ... но по какой-то причине он предпочитает сосредоточиться на 2-й строке в начале после того, как я ее создал, и, таким образом, покидая цикл while, даже думал, что я вызвал c.moveToFirst();
Возможно, я просто устал, а не seeng четко, что я делаю неправильно ... потому что я сравнивал его с другими методами в моем коде, который отлично работает, и я не могу сказать разницу между ними.
Мой метод выглядит следующим образом:
public ArrayList<Kiosk> getKiosks() {
ArrayList<Kiosk> kioskArrayList = new ArrayList<>();
db = dbHandler.getWritableDatabase();
String[] columns = {Tags.TAG_LOCAL_ID, Tags.TAG_ID_SERVER, Tags.TAG_NAME,
Tags.TAG_PHONE_NUMBER, Tags.TAG_CONTACT_NAME, Tags.TAG_SCHOOL_ID};
Cursor c = db.query(DatabaseHandler.TABLE_KIOSK, columns, null, null, null, null, null);
c.moveToFirst();
Log.i("tagg", "Size of the cursor is: " + c.getCount());
while (c.moveToNext()) {
Kiosk kiosk = new Kiosk();
kiosk.setLOCAL_ID(c.getInt(c.getColumnIndex(Tags.TAG_LOCAL_ID)));
kiosk.setIdServer(c.getInt(c.getColumnIndex(Tags.TAG_ID_SERVER)));
kiosk.setName(c.getString(c.getColumnIndex(Tags.TAG_NAME)));
kiosk.setPhoneNumber(c.getString(c.getColumnIndex(Tags.TAG_PHONE_NUMBER)));
kiosk.setContactName(c.getString(c.getColumnIndex(Tags.TAG_CONTACT_NAME)));
kiosk.setSchoolId(c.getInt(c.getColumnIndex(Tags.TAG_SCHOOL_ID)));
c.moveToNext();
kioskArrayList.add(kiosk);
Log.w("taggg", "Added this to the kiosk Array: " + kiosk.getName() +
"Local ID: " + kiosk.getLOCAL_ID());
}
Log.w("tagg", "getKioskhere, size of the array I sent is: " + kioskArrayList.size());
c.close();
db.close();
return kioskArrayList;
}
Мой журнал дает ясно говорит, размер курсора составляет 2, но ArrayList является 1:
03-11 14:18:37.334: W/(18369): School id of the client is: 1
03-11 14:18:37.336: I/(18369): Size of the cursor is: 2
03-11 14:18:37.336: W/(18369): Added this to the kiosk Array: PitaKioskLocal ID: 2
03-11 14:18:37.336: W/(18369): getKioskhere, size of the array I sent is: 1
Любые советы? заблаговременно
Вы вызываете 'moveToFirst()', а затем 'moveToNext()' на курсор перед выполнением любой обработки. Итак, вы начинаете со второй записи. – jas