Библиотека подкачки Jetpack возвращает все данные

В настоящее время я пытаюсь реализовать библиотеку подкачки, предоставляемую android jetpack. Но у меня возникли проблемы с получением данных из DAO. На самом деле, когда я получаю данные, PagedList имеет размер всех строк в таблице!

Вот мой DAO:

@Dao
interface TableDao {
    @Query("SELECT * FROM table")// I tried also with  ORDER BY field DESC, as I saw in some examples.
    fun getData(): DataSource.Factory<Int, MyEntity>

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertAll(songs: List<SongEntity>)
}

Я пытаюсь пройти этот тест:

@Test
fun pageSize() {
    val data = EntityFactory.makeList(50)

    database.getTableDao().apply {
        insertAll(data)

        val pageSize = 5
        RxPagedListBuilder(getData(), pageSize)
                .buildObservable()
                .map { it.size }
                .test()
                .assertValue(pageSize)
    }
}

Не знаю, не хватает ли мне контекста, но я хотел добиться постепенной загрузки данных. Мы будем очень благодарны за любую помощь / объяснение.

размер соответствует всем строкам в таблице, но большинство записей являются нулевыми - просто распечатайте его с помощью Log.d, и вы увидите

pskink 13.07.2018 12:06

Боже, вы правы, я просто одержим, наблюдая за размером стола. Решил благодаря тебе.

crgarridos 13.07.2018 12:15

bien sûr pas de problème ;-)

pskink 13.07.2018 12:18
0
3
372
1

Ответы 1

Как указал @pskink, нет проблемPageList обеспечивает размер счетчика таблицы, но, наконец, просто загружает элементы в той мере, в которой они загружены. При инициализации он предварительно выбирает В 3 раза больше размера страницы. Я адаптировал свой тест и прошел:

@Test
fun pageSize() {
    val data = EntityFactory.makeList(500)

    database.getTableDao().apply {
        insertAll(data)

        repeat(10) {
            val pageSize: Int = DataFactory.randomInt(5..50)
            RxPagedListBuilder(getData(), pageSize)
                    .buildObservable()
                    .map { it.filterNotNull() }
                    .map { it.size }
                    .test()
                    .assertValue(pageSize * 3)
        }
    }
}

Другие вопросы по теме