aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2020-01-10 20:44:12 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-01-10 20:44:12 +0000
commit290c3d2019ddbdb8b111f164c3d8a98dc2a626d0 (patch)
tree4559dcf0fd3da7c580406399b4baedc725e09089
parent025eaa786eb069bb17d553c163474a916a65252b (diff)
parentb92dd935808f9ae74923a7d46c8b8187f99d2c45 (diff)
downloadsupport-290c3d2019ddbdb8b111f164c3d8a98dc2a626d0.tar.gz
Merge "Add Adapter/Differ.refresh" into androidx-master-dev
-rw-r--r--paging/common/api/restricted_3.0.0-alpha01.txt1
-rw-r--r--paging/common/api/restricted_current.txt1
-rw-r--r--paging/common/src/main/kotlin/androidx/paging/PageFetcher.kt15
-rw-r--r--paging/common/src/main/kotlin/androidx/paging/PagingData.kt1
-rw-r--r--paging/common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt4
-rw-r--r--paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt2
-rw-r--r--paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/V3Activity.kt6
-rw-r--r--paging/runtime/api/3.0.0-alpha01.txt2
-rw-r--r--paging/runtime/api/current.txt2
-rw-r--r--paging/runtime/api/public_plus_experimental_3.0.0-alpha01.txt2
-rw-r--r--paging/runtime/api/public_plus_experimental_current.txt2
-rw-r--r--paging/runtime/api/restricted_3.0.0-alpha01.txt2
-rw-r--r--paging/runtime/api/restricted_current.txt2
-rw-r--r--paging/runtime/src/main/java/androidx/paging/AsyncPagingDataDiffer.kt4
-rw-r--r--paging/runtime/src/main/java/androidx/paging/PagingDataAdapter.kt4
15 files changed, 39 insertions, 11 deletions
diff --git a/paging/common/api/restricted_3.0.0-alpha01.txt b/paging/common/api/restricted_3.0.0-alpha01.txt
index f790c155a6a..c622210a688 100644
--- a/paging/common/api/restricted_3.0.0-alpha01.txt
+++ b/paging/common/api/restricted_3.0.0-alpha01.txt
@@ -299,6 +299,7 @@ package androidx.paging {
method public final operator T? get(int index);
method public final int getSize();
method public abstract suspend Object! performDiff(androidx.paging.NullPaddedList<T> previousList, androidx.paging.NullPaddedList<T> newList, java.util.Map<androidx.paging.LoadType,? extends androidx.paging.LoadState> newLoadStates, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public final void refresh();
method public final void retry();
property public final int size;
}
diff --git a/paging/common/api/restricted_current.txt b/paging/common/api/restricted_current.txt
index f790c155a6a..c622210a688 100644
--- a/paging/common/api/restricted_current.txt
+++ b/paging/common/api/restricted_current.txt
@@ -299,6 +299,7 @@ package androidx.paging {
method public final operator T? get(int index);
method public final int getSize();
method public abstract suspend Object! performDiff(androidx.paging.NullPaddedList<T> previousList, androidx.paging.NullPaddedList<T> newList, java.util.Map<androidx.paging.LoadType,? extends androidx.paging.LoadState> newLoadStates, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public final void refresh();
method public final void retry();
property public final int size;
}
diff --git a/paging/common/src/main/kotlin/androidx/paging/PageFetcher.kt b/paging/common/src/main/kotlin/androidx/paging/PageFetcher.kt
index 17a7245a41d..4b4dd0c7fc2 100644
--- a/paging/common/src/main/kotlin/androidx/paging/PageFetcher.kt
+++ b/paging/common/src/main/kotlin/androidx/paging/PageFetcher.kt
@@ -66,13 +66,14 @@ internal class PageFetcher<Key : Any, Value : Any>(
fun refresh() {
refreshChannel.offer(Unit)
}
-}
-@UseExperimental(ExperimentalCoroutinesApi::class, FlowPreview::class)
-internal class PagerUiReceiver<Key : Any, Value : Any> constructor(
- private val pager: Pager<Key, Value>
-) : UiReceiver {
- override fun addHint(hint: ViewportHint) = pager.addHint(hint)
+ inner class PagerUiReceiver<Key : Any, Value : Any> constructor(
+ private val pager: Pager<Key, Value>
+ ) : UiReceiver {
+ override fun addHint(hint: ViewportHint) = pager.addHint(hint)
+
+ override fun retry() = pager.retry()
- override fun retry() = pager.retry()
+ override fun refresh() = this@PageFetcher.refresh()
+ }
}
diff --git a/paging/common/src/main/kotlin/androidx/paging/PagingData.kt b/paging/common/src/main/kotlin/androidx/paging/PagingData.kt
index 7e81505b28f..020341e11c7 100644
--- a/paging/common/src/main/kotlin/androidx/paging/PagingData.kt
+++ b/paging/common/src/main/kotlin/androidx/paging/PagingData.kt
@@ -123,4 +123,5 @@ class PagingData<T : Any> internal constructor(
internal interface UiReceiver {
fun addHint(hint: ViewportHint)
fun retry()
+ fun refresh()
} \ No newline at end of file
diff --git a/paging/common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt b/paging/common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt
index 0c4e7f691fe..ce6fe36d79a 100644
--- a/paging/common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt
+++ b/paging/common/src/main/kotlin/androidx/paging/PagingDataDiffer.kt
@@ -82,6 +82,10 @@ abstract class PagingDataDiffer<T : Any>(
receiver?.retry()
}
+ fun refresh() {
+ receiver?.refresh()
+ }
+
val size: Int
get() = presenter.size
} \ No newline at end of file
diff --git a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt
index f8c66b264df..ae52a558f16 100644
--- a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt
+++ b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt
@@ -36,7 +36,7 @@ internal class ItemPagingSource : PagingSource<Int, Item>() {
override fun getRefreshKeyFromPage(
indexInPage: Int,
page: LoadResult.Page<Int, Item>
- ): Int? = page.prevKey!! + indexInPage
+ ): Int? = page.itemsBefore + indexInPage
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Item> =
when (params.loadType) {
diff --git a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/V3Activity.kt b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/V3Activity.kt
index 6b98d8f0b70..3683859c8c2 100644
--- a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/V3Activity.kt
+++ b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/V3Activity.kt
@@ -69,13 +69,13 @@ class V3Activity : AppCompatActivity() {
val buttonEnd = findViewById<Button>(R.id.button_end)
buttonRefresh.setOnClickListener {
- TODO() // need to define this API
+ adapter.refresh()
}
buttonStart.setOnClickListener {
- TODO() // need to define this API
+ adapter.retry()
}
buttonEnd.setOnClickListener {
- TODO() // need to define this API
+ adapter.retry()
}
adapter.addLoadStateListener { type: LoadType, state: LoadState ->
diff --git a/paging/runtime/api/3.0.0-alpha01.txt b/paging/runtime/api/3.0.0-alpha01.txt
index f0b3d8c8484..306356cc0b3 100644
--- a/paging/runtime/api/3.0.0-alpha01.txt
+++ b/paging/runtime/api/3.0.0-alpha01.txt
@@ -32,6 +32,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method public T? getItem(int index);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
property public int itemCount;
@@ -80,6 +81,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method protected T? getItem(int position);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
}
diff --git a/paging/runtime/api/current.txt b/paging/runtime/api/current.txt
index f0b3d8c8484..306356cc0b3 100644
--- a/paging/runtime/api/current.txt
+++ b/paging/runtime/api/current.txt
@@ -32,6 +32,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method public T? getItem(int index);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
property public int itemCount;
@@ -80,6 +81,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method protected T? getItem(int position);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
}
diff --git a/paging/runtime/api/public_plus_experimental_3.0.0-alpha01.txt b/paging/runtime/api/public_plus_experimental_3.0.0-alpha01.txt
index f0b3d8c8484..306356cc0b3 100644
--- a/paging/runtime/api/public_plus_experimental_3.0.0-alpha01.txt
+++ b/paging/runtime/api/public_plus_experimental_3.0.0-alpha01.txt
@@ -32,6 +32,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method public T? getItem(int index);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
property public int itemCount;
@@ -80,6 +81,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method protected T? getItem(int position);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
}
diff --git a/paging/runtime/api/public_plus_experimental_current.txt b/paging/runtime/api/public_plus_experimental_current.txt
index f0b3d8c8484..306356cc0b3 100644
--- a/paging/runtime/api/public_plus_experimental_current.txt
+++ b/paging/runtime/api/public_plus_experimental_current.txt
@@ -32,6 +32,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method public T? getItem(int index);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
property public int itemCount;
@@ -80,6 +81,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method protected T? getItem(int position);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
}
diff --git a/paging/runtime/api/restricted_3.0.0-alpha01.txt b/paging/runtime/api/restricted_3.0.0-alpha01.txt
index f0b3d8c8484..306356cc0b3 100644
--- a/paging/runtime/api/restricted_3.0.0-alpha01.txt
+++ b/paging/runtime/api/restricted_3.0.0-alpha01.txt
@@ -32,6 +32,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method public T? getItem(int index);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
property public int itemCount;
@@ -80,6 +81,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method protected T? getItem(int position);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
}
diff --git a/paging/runtime/api/restricted_current.txt b/paging/runtime/api/restricted_current.txt
index f0b3d8c8484..306356cc0b3 100644
--- a/paging/runtime/api/restricted_current.txt
+++ b/paging/runtime/api/restricted_current.txt
@@ -32,6 +32,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method public T? getItem(int index);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
property public int itemCount;
@@ -80,6 +81,7 @@ package androidx.paging {
method public final void connect(kotlinx.coroutines.flow.Flow<androidx.paging.PagingData<T>> flow, kotlinx.coroutines.CoroutineScope scope);
method protected T? getItem(int position);
method public int getItemCount();
+ method public final void refresh();
method public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
method public final void retry();
}
diff --git a/paging/runtime/src/main/java/androidx/paging/AsyncPagingDataDiffer.kt b/paging/runtime/src/main/java/androidx/paging/AsyncPagingDataDiffer.kt
index 5142d8fbe5e..f4435c0abec 100644
--- a/paging/runtime/src/main/java/androidx/paging/AsyncPagingDataDiffer.kt
+++ b/paging/runtime/src/main/java/androidx/paging/AsyncPagingDataDiffer.kt
@@ -107,6 +107,10 @@ open class AsyncPagingDataDiffer<T : Any>(
differBase.retry()
}
+ fun refresh() {
+ differBase.refresh()
+ }
+
/**
* Get the item from the current PagedList at the specified index.
*
diff --git a/paging/runtime/src/main/java/androidx/paging/PagingDataAdapter.kt b/paging/runtime/src/main/java/androidx/paging/PagingDataAdapter.kt
index 669732f4564..a7eff201ea3 100644
--- a/paging/runtime/src/main/java/androidx/paging/PagingDataAdapter.kt
+++ b/paging/runtime/src/main/java/androidx/paging/PagingDataAdapter.kt
@@ -42,6 +42,10 @@ abstract class PagingDataAdapter<T : Any, VH : RecyclerView.ViewHolder>(
differ.retry()
}
+ fun refresh() {
+ differ.refresh()
+ }
+
protected open fun getItem(position: Int) = differ.getItem(position)
override fun getItemCount() = differ.itemCount