Случайный размер курсора базы данных 0 - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть проблема с моим приложением, когда иногда Arraylist отображается в обзоре переработчика, а иногда нет.Arraylist заполняется из курсора DB SQLLite.

public List<OrderItem> getAllOrders(String vendor) {
    List<OrderItem> ordersList = new ArrayList<>();

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(
            LocalOrderQty.TABLE_NAME,
            new String[]{"*"},
            LocalOrderQty.COLUMN_VENDOR + " = ?",
            new String[]{vendor},
            null,
            null,
            null);

    Log.d(TAG, "Vendor name: " + vendor + " Cursor size " + cursor.getCount());

    if (cursor.moveToFirst()) {
        do { //(String barcode, String imageURL, String name, Integer quantity, String unit, String vendor)
            ordersList.add(new OrderItem(
                    cursor.getString(1),
                    cursor.getString(4),
                    cursor.getString(2),
                    cursor.getInt(3),
                    cursor.getString(5),
                    cursor.getString(0)
            ));
            Log.d(TAG, "cursor1getstring: " + cursor.getString(1));
        } while (cursor.moveToNext());
    }

    cursor.close();
    db.close();
    return ordersList;
}

Это мой logcat:

D/DatabaseHelper: Vendor name: ABC Cursor size 5
D/DatabaseHelper: cursor1getstring: 9559001380099
cursor1getstring: 9559001380105
cursor1getstring: 9559001380792
cursor1getstring: 9559001380815

А потом, когда он не работает, это logcat:

D/DatabaseHelper: Vendor name: ABC Cursor size 0

Несмотря на то, что когда я открываю файл базы данных из браузера SQL, данные определенно присутствуют и они заполняются.

Что-то нужно улучшить в моем коде?

Этопроблема случайная, иногда появляется список, иногда 0.

1 Ответ

0 голосов
/ 23 сентября 2018

Я подтвердил, что данные, загруженные из Firestore (асинхронно), иногда не завершаются вовремя до того, как база данных снова будет прочитана, поэтому размер, равный 0, когда метод пытается прочитать, пока он еще записывается.

Исправление будет состоять в том, чтобы дождаться окончания, прежде чем читать снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...