Источник данных всегда возвращает полные данные из базы данных комнаты, даже если я предоставил количество данных, загруженных на каждой странице - PullRequest
1 голос
/ 22 мая 2019

Я использую пейджинг (часть android Jetpack) для извлечения данных из моей комнаты базы данных. Я хотел получить 50 записей на каждой странице. Но функция DataSource.Factory.toLivedata (pageSize) возвращает полные данные из базы данных.

Я попытался предоставить конфигурацию для метода toLivedata (), но похоже, что он игнорируется

private val config = PagedList.Config.Builder()
        .setInitialLoadSizeHint(50)
        .setPageSize(50)
        .build()

fun getPagedData(): LiveData<PagedList<TransactionEntity>> =
        transactionDao.getAllTransactions().toLiveData(config)

//TransctionDao
@Query("SELECT * FROM transaction_table order by date DESC")
    fun getAllTransactions(): DataSource.Factory<Int, TransactionEntity>

//Observing Live Data
getPagedData().observe(this,Observer<PagedList<TransactionEntity>> { t ->
            Log.d("Activity", "Size is " + t.size)

})

Я ожидал, что размер PagedList равен 50, но он всегда дает целые записи из транзакции_таблицы

1 Ответ

0 голосов
/ 22 мая 2019

Причина, по которой вы думаете, что все данные загружены, заключается в том, что PagedList использует заполнители для данных, которые еще не были загружены, и, как в документации , размер представляет собой весь размер данных, а не только размер загруженных данных..

Если вы хотите изменить это, вы можете использовать setEnablePlaceholders(false) в конструкторе конфигураций.Вы можете проверить его, позвонив по номеру get(6500), и вы должны получить значение NULL, так как этот элемент еще не был загружен.

Советую прочитать раздел PlaceHolders .

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