diff options
author | Chris Craik <ccraik@google.com> | 2020-01-10 20:44:12 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-01-10 20:44:12 +0000 |
commit | 290c3d2019ddbdb8b111f164c3d8a98dc2a626d0 (patch) | |
tree | 4559dcf0fd3da7c580406399b4baedc725e09089 | |
parent | 025eaa786eb069bb17d553c163474a916a65252b (diff) | |
parent | b92dd935808f9ae74923a7d46c8b8187f99d2c45 (diff) | |
download | support-290c3d2019ddbdb8b111f164c3d8a98dc2a626d0.tar.gz |
Merge "Add Adapter/Differ.refresh" into androidx-master-dev
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 |