- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 PagedListAdapter
的 RecyclerView
。我想刷新列表(即从我的 DataSource
获取数据)并自动滚动到顶部。
这是我的 RecyclerView:
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
val adapter by lazy {
DiscoveryListAdapter(activity)
}
recyclerView.let {
it.adapter = adapter
it.layoutManager = LinearLayoutManager(activity)
}
这是我的适配器:
class DiscoveryListAdapter() : PagedListAdapter<Discovery, DiscoveryListItemViewHolder>(DiscoveryDiffCallback()) {
@SuppressLint("CheckResult")
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DiscoveryListItemViewHolder {
//Extension function
val view = parent.inflate(R.layout.discovery_detail_list_item)
return DiscoveryListItemViewHolder(view)
}
override fun onBindViewHolder(viewHolder: DiscoveryListItemViewHolder, position: Int) {
getItem(position)?.let {
viewHolder.populateFrom(it)
}
}
class DiscoveryDiffCallback : DiffUtil.ItemCallback<Discovery>() {
override fun areItemsTheSame(one: Discovery, two: Discovery) =
one == two
override fun areContentsTheSame(one: Discovery, two: Discovery) =
one == two
}
}
我正在像这样构建 PagedList,订阅返回的 LiveData 对象并在适配器上调用 submitList
:
fun buildLivePagedList(): LiveData<PagedList<Discovery>> {
val config = PagedList.Config.Builder()
.setPageSize(PAGE_SIZE)
.setEnablePlaceholders(false)
.setPrefetchDistance(PAGE_SIZE * 2)
.build()
val factory = DiscoveryListDataSourceFactory()
return LivePagedListBuilder(factory, config).build()
}
我正在使用这一行来刷新列表:
adapter.currentList?.dataSource?.invalidate()
这似乎刷新正确,但它使列表向下滚动一半。从那里我不知道如何让 recyclerview 返回到列表的顶部。我尝试过 recyclerView.scrollToPosition(0)
但没有骰子。无论如何,列表都会刷新但不会滚动到顶部。我该怎么做?
最佳答案
尝试使用以下代码滚动到顶部:
pagedListAdapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
if (positionStart == 0) {
manager.scrollToPosition(0)
}
}
})
关于android - 如何刷新 RecyclerView + PagedListAdapter 并滚动到顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55961625/
我想使用通用类作为 PagingList<> 中的项目 interface GenericInterface{} class GenericImplementation: GenericInterfa
我有一个带有搜索操作的操作栏菜单项。我有一个 recyclerview,它从 pagedlistadapter 加载 pagedlist 的地方绑定(bind)数据。我需要过滤适配器数据白色搜索 Vi
我正在使用 PagedListAdapter 并且必须在屏幕恢复时重新加载数据。 对于这种情况,我不想在加载数据时清除适配器并将其显示为空或占位符。 我想显示以前的数据,并在收到新数据后用差异更新它。
我已经使用 ItemKeyedDataSource 实现了新的 PagedListAdapter。我的列表包含带有“赞”按钮的提要项目。单击“喜欢”按钮应刷新该项目。 为了在点击“赞”按钮时刷新我的列
我有一个 Android 待办事项列表应用程序,其中包含使用 Room 访问的 SQLite 数据库。然后我想在抽屉导航中列出可用列表。所以我使用了分页库。现在 RecyclerView 是空的,我不
本主题的小故事:应用程序在确认后仅通过对话框更新单击行的值。在房间数据库上使用分页方案。 当一个项目被添加或删除时,最新的数据集被获取并传递给 submitList 方法,然后所有的变化都会被看到并且
我正在使用 Room 和 Paging 库来显示类别。 我的实体: @Entity(tableName = Database.Table.CATEGORIES) data class Category
我正在使用新的 Paging 库从休息 API 加载分页数据,但我无法理解如何在新数据缓存在 Room 后继续加载它。目前,我有一个 PagedListAdapter,它通过使用边界回调从 API 加
我正在使用 Paging library . 目前,我想按 PagedListAdapter 中的描述对项目进行排序(使用 SortList ),但我还没有想出如何去做。 使用 PagedListAd
每次我调用无效数据时,我的 DIFF_UTIL 都不会被使用。日志未显示,整个列表已更新为新数据,导致屏幕移动位置等。不确定这里的问题是什么。 我有PagedListAdapter与 LiveData
我有一个使用 PagedListAdapter 的 RecyclerView。我想刷新列表(即从我的 DataSource 获取数据)并自动滚动到顶部。 这是我的 RecyclerView:
我想使用 android.arch.paging 组件在列表中 header 。 通常这很容易,只需为 RecyclerView 适配器添加不同的类型来处理和创建包含标题的项目的新列表。 但是对于分页
我有 PagedListAdapater: class TrackedActivityAdapter constructor(diffUtilCallback: DiffUtil.ItemCallba
我正在使用来自 Android 分页库的 PagedListAdapter 和 PageKeyedDataSource。我想在屏幕旋转后恢复 recyclerview 位置。我怎样才能做到这一点?Li
我有一个带有 PagedListAdapter 的回收站 View 。 在 onCreate 我有这段代码: viewModel.recentPhotos.observe(this, Observe
我使用 Paging with Retrofit 从 REST API 加载通知数据列表。 当我按下通知项的删除按钮时,我调用删除 API 将其删除。删除 API 响应成功后从 PagedListAd
我一直在试验 PagedListAdapter,但无法弄清楚如何正确恢复适配器位置。 最后一次尝试是从当前列表中保存 lastKey。 override fun onSaveInstanceState
通常在 RecyclerView 上,当 RecyclerView 上没有项目时,我会显示一个空 View ,因为我控制对 RecyclerView 的所有更新通过 notify 方法,这非常简单,但
我基于 PagedListAdapter 实现了分页功能,并且我已经过检查工作正常。我尝试实现以如果 ListAdapter 项为空则显示 EmptyHolder 为特色。在调用 submitList
我使用 android.arch.paging.PagedListAdapter 和 数据库作为 RecyclerView 中显示项目的数据源. 每个项目都有日期。我还在 override fun o
我是一名优秀的程序员,十分优秀!