作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PageKeyedDataSource 从网络获取数据。数据共有 6 页,pagesize 为 10。
val myPagingConfig = PagedList.Config.Builder()
.setPageSize(pageSize)
.setPrefetchDistance(pageSize)
.setInitialLoadSizeHint(pageSize)
.setEnablePlaceholders(false)
.build()
最佳答案
由于使用 RecyclerView
,我遇到了同样的问题在 NestedScrollView
.
如果您遇到同样的情况,请尝试删除 NestedScrollView
或使用 this而不是 NestedScrollView。
(引用这篇 answer )
import android.content.Context
import android.util.AttributeSet
import android.view.View
import android.view.ViewGroup
import androidx.core.view.forEach
import androidx.core.widget.NestedScrollView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
open class SmartNestedScrollView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : NestedScrollView(context, attrs, defStyleAttr) {
override fun measureChildWithMargins(child: View, parentWidthMeasureSpec: Int, widthUsed: Int, parentHeightMeasureSpec: Int, heightUsed: Int) {
if (findNestedRecyclerView(child) != null) {
val lp = child.layoutParams as MarginLayoutParams
val childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
lp.topMargin + lp.bottomMargin, MeasureSpec.AT_MOST
)
child.measure(parentWidthMeasureSpec, childHeightMeasureSpec)
} else {
super.measureChildWithMargins(child, parentWidthMeasureSpec, widthUsed, parentHeightMeasureSpec, heightUsed)
}
}
private fun findNestedRecyclerView(view: View): RecyclerView? {
if (view is RecyclerView) {
val vertical = (view.layoutManager as? LinearLayoutManager)?.orientation == LinearLayoutManager.VERTICAL
if (vertical) return view
}
if (view is ViewGroup) {
view.forEach { child ->
val rv = findNestedRecyclerView(child)
if (rv != null) return rv
}
}
return null
}
}
//reference: https://gist.github.com/danaimset/abacaa50d746a4537686a08ecc33c1a9
更新:
nextKey
在
PagingSource
如果到达数据末尾则分类(即没有更多数据要加载)
override suspend fun load(params: LoadParams<String>): LoadResult<String, Wallpost> {
return try {
val nextPage = params.key ?: url
val response = repository.getPostList(nextPage)
LoadResult.Page(
data = response.list,
prevKey = "",
nextKey = if (response.hasNextPage) response.next else null
)
}catch (e: Exception){
LoadResult.Error(e)
}
}
关于android - Jetpack 分页库无需滚动即可加载所有页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61998881/
这实际上是我问的问题的一部分here ,该问题没有得到答复,最终被标记为重复。 问题:我只需使用 @Autowired 注释即可使用 JavaMailSender。我没有通过任何配置类公开它。 @Co
我是一名优秀的程序员,十分优秀!