From 6751e9accaf5bb11726de678fa4251fd1c0c837b Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sat, 28 Sep 2019 17:16:53 +0200 Subject: [PATCH] Add some paging changes Increase page size and prefetch distance to avoid some updating problems, use DataSource instead of PageKeyedDataSource --- .../com/readrops/app/adapters/MainItemListAdapter.java | 10 ++++++++-- .../java/com/readrops/app/database/dao/ItemDao.java | 4 ++-- .../com/readrops/app/viewmodels/MainViewModel.java | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/readrops/app/adapters/MainItemListAdapter.java b/app/src/main/java/com/readrops/app/adapters/MainItemListAdapter.java index 6abd08e0..1473f8eb 100644 --- a/app/src/main/java/com/readrops/app/adapters/MainItemListAdapter.java +++ b/app/src/main/java/com/readrops/app/adapters/MainItemListAdapter.java @@ -122,8 +122,10 @@ public class MainItemListAdapter extends PagedListAdapter localSelection = new LinkedHashSet<>(selection); selection.clear(); - notifyDataSetChanged(); + + for (int position : localSelection) { + notifyItemChanged(position, getItem(position)); + } } public LinkedHashSet getSelection() { diff --git a/app/src/main/java/com/readrops/app/database/dao/ItemDao.java b/app/src/main/java/com/readrops/app/database/dao/ItemDao.java index 7386c461..5b9c5bb8 100644 --- a/app/src/main/java/com/readrops/app/database/dao/ItemDao.java +++ b/app/src/main/java/com/readrops/app/database/dao/ItemDao.java @@ -2,7 +2,7 @@ package com.readrops.app.database.dao; import androidx.lifecycle.LiveData; -import androidx.paging.PageKeyedDataSource; +import androidx.paging.DataSource; import androidx.room.Dao; import androidx.room.Query; import androidx.room.RawQuery; @@ -21,7 +21,7 @@ import io.reactivex.Completable; public abstract class ItemDao implements BaseDao { @RawQuery(observedEntities = {Item.class, Folder.class, Feed.class}) - public abstract PageKeyedDataSource.Factory selectAll(SupportSQLiteQuery query); + public abstract DataSource.Factory selectAll(SupportSQLiteQuery query); @Query("Select case When :guid In (Select guid From Item Inner Join Feed on Item.feed_id = Feed.id and account_id = :accountId) Then 1 else 0 end") public abstract boolean itemExists(String guid, int accountId); diff --git a/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java b/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java index aeeec180..e809040e 100644 --- a/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java +++ b/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java @@ -70,8 +70,8 @@ public class MainViewModel extends AndroidViewModel { lastFetch = new LivePagedListBuilder<>(db.itemDao().selectAll(queryBuilder.getQuery()), new PagedList.Config.Builder() - .setPageSize(40) - .setPrefetchDistance(80) + .setPageSize(100) + .setPrefetchDistance(150) .setEnablePlaceholders(false) .build()) .build();