如何解决PositionalDataSource 从解析服务器数据库不返回任何内容
我正在尝试使用 Products
数据源类型从 Parse Server
数据库加载 PositionalDataSource()
项,以便能够在向下滚动时获取项页。
这是我到目前为止所做的:
我的 PositionalDataSource() 类
class ParsePositionalDataSource: PositionalDataSource<Product>() {
private fun getQuery() : ParseQuery<Product> {
return ParseQuery.getQuery(Product::class.java).orderByDescending("createdAt")
}
override fun loadRange(params: LoadRangeParams,callback: LoadRangeCallback<Product>) {
val query = getQuery()
query.limit = params.loadSize
query.skip = params.startPosition
val products = query.find()
callback.onResult(products)
}
override fun loadInitial(params: LoadInitialParams,callback: LoadInitialCallback<Product>) {
val query = getQuery()
query.limit = params.requestedLoadSize
query.skip = params.requestedStartPosition
val count = query.count()
val products = query.find()
callback.onResult(products,params.requestedStartPosition,count)
}
}
然后是一个数据源工厂:
class ParseDataSourceFactory : DataSource.Factory<Int,Product>() {
override fun create(): DataSource<Int,Product> {
return ParsePositionalDataSource()
}
}
最后是我的 ViewModal 类
class CategoryTabviewmodel() : viewmodel() {
private var pagedListConfig: PagedList.Config = PagedList.Config.Builder().setEnablePlaceholders(true)
.setPrefetchdistance(5)
.setinitialLoadSizeHint(5)
.setPageSize(5).build()
private val sourceFactory = ParseDataSourceFactory()
private val _productList = LivePagedListBuilder(sourceFactory,pagedListConfig).build()
val x = _productList
//val productList: LiveData<PagedList<Product>> = _productList
fun getProductList(): LiveData<PagedList<Product>> {
return _productList
}
}
我已经通过在以下位置设置断点来检查 loadinitial()
是否返回数据:val products = query.find()
并且是的,products
包含 Product
的列表
但在我的 ViewModal 中,_productList
始终为 null 或空列表。
我错过了什么吗?
解决方法
我在挖掘调试器控制台输出时自己找到了解决方案。
我看到一行写着:
E/RecyclerView: No layout manager attached; skipping layout
在我的 RecyclerView 中添加 layoutmanager 后它工作得很好
<androidx.recyclerview.widget.RecyclerView
...
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
... />
文档说:
一个LayoutManager负责测量和定位item RecyclerView 中的视图以及确定何时执行的策略 回收用户不再可见的项目视图。经过 改变 LayoutManager 一个 RecyclerView 可以用来实现一个 标准垂直滚动列表,统一网格,交错网格, 水平滚动集合等等。几种股票布局 管理器供一般使用。
和
在编写 RecyclerView.LayoutManager 时,您几乎总是想要 使用布局位置,而在编写 RecyclerView.Adapter 时,您 可能想使用适配器位置。
看来 RecyclerView.Adapter
需要设置 RecyclerView.LayoutManager
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。