- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 GridLayoutManager
中将跨度大小设置为 1当LoadState
是 Loading
在分页库中。
我试过this解决方案,但它不起作用。
对于复制问题:克隆 this官方 repo 和设置GridLayoutManager
在 SearchRepositoriesActivity
我的代码在这里
电影列表 fragment
....
private val adapter = MoviesAdapter()
....
private fun initAdapter() {
val decoration = DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
binding.rvMovies.addItemDecoration(decoration)
binding.rvMovies.layoutManager = GridLayoutManager(requireContext(), 2)
binding.rvMovies.isNestedScrollingEnabled = true
binding.rvMovies.adapter = adapter.withLoadStateFooter(
footer = MoviesLoadStateAdapter { adapter.retry() }
)
}
class MoviesAdapter(
) : PagingDataAdapter<Movie, MoviesAdapter.ViewHolder>(MOVIE_COMPARATOR) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = ItemMovieListBinding.inflate(LayoutInflater.from(parent.context))
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val movie = getItem(position)
if (movie != null) {
val viewModel = MovieListItemViewModel(movie)
holder.bind(viewModel)
}
}
inner class ViewHolder(var viewBinding: ItemMovieListBinding) :
RecyclerView.ViewHolder(viewBinding.root) {
fun bind(viewModel: MovieListItemViewModel) {
viewBinding.viewModel = viewModel
}
}
companion object {
private val MOVIE_COMPARATOR = object : DiffUtil.ItemCallback<Movie>() {
override fun areItemsTheSame(oldItem: Movie, newItem: Movie): Boolean =
oldItem.id == newItem.id
override fun areContentsTheSame(oldItem: Movie, newItem: Movie): Boolean =
oldItem == newItem
}
}
}
class MoviesLoadStateAdapter(private val retry : () -> Unit) :
LoadStateAdapter<MoviesLoadStateAdapter.MoviesLoadStateViewHolder>()
{
override fun onBindViewHolder(holder: MoviesLoadStateViewHolder, loadState: LoadState) {
holder.bind(loadState)
}
override fun onCreateViewHolder(
parent: ViewGroup,
loadState: LoadState
): MoviesLoadStateViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_movie_load_state_footer_view, parent, false)
val binding = ItemMovieLoadStateFooterViewBinding.bind(view)
return MoviesLoadStateViewHolder(binding, retry)
}
inner class MoviesLoadStateViewHolder(private val binding: ItemMovieLoadStateFooterViewBinding,
retry : ()-> Unit) :
RecyclerView.ViewHolder(binding.root) {
init {
binding.retryButton.setOnClickListener {
retry.invoke()
}
}
fun bind(loadState : LoadState){
if(loadState is LoadState.Error){
binding.errorMsg.text = loadState.error.localizedMessage
}
binding.progressBar.visibility = toVisibility(loadState is LoadState.Loading)
}
}
}
ProgressBar
应该显示在屏幕中央。
最佳答案
我解决了。这是我的代码
在您的 Activity 中
val gridLayoutManager = GridLayoutManager(activity, 2)
gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
val viewType = wallpaperAdapter.getItemViewType(position)
return if(viewType == WALLPAPER_VIEW_TYPE) 1
else 2
}
}
binding.recyclerView.apply {
this.layoutManager = gridLayoutManager
this.setHasFixedSize(true)
this.adapter = wallpaperAdapter
}
在您的 PagingDataAdapter
override fun getItemViewType(position: Int): Int {
if (position == itemCount){
return NETWORK_VIEW_TYPE
}else {
return WALLPAPER_VIEW_TYPE
}
}
希望它对你有用。
关于android - 使用 GridLayoutManager 在分页库中设置跨度大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62358002/
我正在使用 Recyclerview 和网格布局管理器在 android 中实现仪表板,其中连续 3 个项目。我将从服务器获取仪表板项目。根据项目的数量,我需要将Recyclerview项目调整到中心
我想知道是否有办法可以在android中自定义gridlayoutmanager以具有像这样的草图的水平布局: 我尝试了在 Github 中找到的一些布局管理器,但没有一个可以帮助我实现这种布局管理器
所以我使用 RecyclerView 和 GridLayoutManager 项目之间的间距在项目周围不一致 这是它在 4 x 4 网格中的样子 这是它在 5 x 5 网格中的样子 我已经尝试了很多来
我有一个 list ,假设有 20 个项目。我希望能够像这样加载它们 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 我正在使用 Recycler
我在使用 GridLayoutManager 填充回收器 View 时遇到问题。 我需要完成第一行,完成后,转到第二行。我做了一个重新排序列表的算法,所以它被正确显示,我可以在不做任何映射取消映射的情
我正在尝试使用 GridLayoutManager 在 RecyclerView 中添加自定义分隔线但没有成功,我已经搜索了很多并查看了下面提到的答案但它没有帮助我 link 1 link 2 lin
我在我的 RecyclerView 中使用 GridLayoutManager(GLM)。在 RecyclerView 中,我将填充 CardViews,如何设置我的 GLM 以仅呈现一个 CardV
我想在使用 RecyclerView 时在 GridLayoutManager 的一行中显示可变数量的列。要显示的列数取决于列的 TextView 的大小。 我不知道列宽,因为文本是动态放入其中的。
我正在试验 RecyclerView 和 GridLayoutManager。 我最终想要显示与这样显示相同大小的图像,如果可能的话甚至是正方形: GridLayoutManager 的元素是什么使这
我正在尝试使用 GridLayoutManager 构建一个 RecyclerView,它的每行列数可变,如下所示: 同一行中所有项目的宽度之和始终是屏幕宽度。 我尝试重新组织项目列表,按行列表对它们
我有一个带有显示卡片 View 的 GridLayoutManager 的 RecyclerView。我希望卡片根据屏幕大小重新排列(Google Play 应用程序使用它的应用程序卡片做这种事情)。
我有 3 个 Activity :A --> B --> C 在 Activity B 中,我使用 RecyclerView 的 GridlayoutManager 进行填充。我想在导航到 Activ
只是试图将我的 RecyclerView 水平居中。 这是xml: 这里是java代码: mRecyclerView = findViewById(R.id.recycler_view
在 GridLayoutManager 中将跨度大小设置为 1当LoadState是 Loading在分页库中。 我试过this解决方案,但它不起作用。 对于复制问题:克隆 this官方 repo 和
我需要具有水平滚动行为的 RecyclerView Gridlayout 管理器。它必须像垂直方向一样添加 subview (例如(第 1 行,第 1 列)= 索引 0,(第 1 行,第 2 列)=
我用了GridLayoutManager作为我的回收站 View 的布局管理器。 mRecyclerView.setLayoutManager(new GridLayoutManager(getC
我想在 RecyclerView 中创建类似的东西: 但是,我得到了这个: 有没有办法用 RecyclerView 实现这一点? 最佳答案 尝试并检查更换线路 postLine.setLayoutMa
我有 layoutManager = GridLayoutManager(context, 3) 如何使每条奇数线方向从左到右和偶数线 - 从右到左 看起来像: 0 -> 1 -> 2 5 7 ->
我有一个用 RecyclerView 填满屏幕的 fragment ( android:support:v7.widget.RecyclerView ) 和一个 GridLayoutManager .
我正在使用 GridLayoutManager,因此动态设置 recyclerview 的列数(每行)。这是我的代码: GridLayoutManager gridLayoutManager = ne
我是一名优秀的程序员,十分优秀!