- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的 View 模型 -
private val viewState = SchoolsViewState()
fun onViewOpened() =
Transformations.map(schoolUseCase.performAction(SchoolAction.GetList)) {
when (it) {
is SchoolResult.Loading -> viewState.copy(loading = true)
is SchoolResult.ListContent -> viewState.copy(loading = false, listData = it.schoolList)
is SchoolResult.Error -> viewState.copy(loading = false, error = it.error)
else -> viewState.copy(loading = false)
}
}
viewState 类看起来像这样 -
data class SchoolsViewState(
val loading: Boolean = false,
val schoolList: List<SchoolModel> = emptyList(),
val error: SchoolResult.ErrorType? = null
)
Fragment View 模型观察代码如下所示 -
viewModel.onViewOpened().observe(this, Observer {
//Handling the SchoolsViewState here
swipeContainer.isRefreshing = it.loading
if (it.schoolList.isNullOrEmpty()) {
view?.recycler_view?.visibility = View.GONE
view?.empty_view?.visibility = View.VISIBLE
} else {
view?.recycler_view?.visibility = View.VISIBLE
view?.empty_view?.visibility = View.GONE
view?.recycler_view?.adapter = schoolAdapter
myAdapter.setSchoolList(it.schoolList)
}
})
问题出在每次滑动刷新时,我首先看到的是空 View ,一旦有数据,我就会看到学校列表。所以这是一种 UI 不便。这是由于 viewState.copy(...)
在每次刷新时都会为 UI 提供新状态。我该如何克服这个问题?
最佳答案
如果列表为空,则不应显示空 View ,因为列表仍在加载中 - 这没有意义。相反,您应该仅在 loading = false
并且您的列表为空时显示它。在这种情况下,您真的别无选择。因此,您的代码可能如下所示:
viewModel.onViewOpened().observe(this, Observer {
//Handling the SchoolsViewState here
swipeContainer.isRefreshing = it.loading
// if means the loading is finished
if (!it.loading) {
if (it.schoolList.isNullOrEmpty()) {
view?.recycler_view?.visibility = View.GONE
view?.empty_view?.visibility = View.VISIBLE
} else {
view?.recycler_view?.visibility = View.VISIBLE
view?.empty_view?.visibility = View.GONE
view?.recycler_view?.adapter = schoolAdapter
myAdapter.setSchoolList(it.schoolList)
}
} else {
// here you could show some loading progress or similar
}
})
关于Android 回收站 View 最初总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58680097/
@ 目录 原理 创建过滤器 使用过滤器 查询 删除 恢复
我在回收站 View 中使用了一个 item.xml,但文本超出了屏幕。我试图依靠这个 answer , You can avoid all of this by giving each textvi
我的应用程序中有一个回收站 View 。每个回收器 View 项都有一个 imageView。我使用 asyncTask 加载位图并将它们添加到磁盘缓存,然后再将它们设置到 onPostExecute
我已经多次问过这个类似的问题,我花了 2 周多的时间才试图找出解决方案。是的,我知道有多个类似的问题,但我问的原因是因为堆栈上流的解决方案都不起作用。我是 Android 开发的初学者,因此我问你请帮
有谁知道允许特定角色的用户查看 Sitecore 回收站中所有项目的解决方案? 目前,只有管理员可以查看所有已删除的项目。用户只能看到他们已删除的项目。 最佳答案 没有开箱即用的方法,SqlArchi
您好,我有以下回收器适配器: package com.example.app.adapters; import android.annotation.TargetApi; import android
我看不到回收 View ,不确定哪里出了问题。如果你能帮助我,那就太好了。 fragment public class CallDurationFragment extends Fragment {
我是 android 开发的新手。我有一个带有 Viewholder 的 recyclerview 用于显示照片。我在我的应用程序中实现了 like 功能,但我面临的唯一问题是当我添加一个 喜欢 在照
我正在编写一个消息传递应用程序,在 RecyclerView 中显示我的消息和其他消息。 白色背景消息是我的消息,彩色消息是其他消息。 当每条消息顺序为“我的消息,其他消息,...”时,回收站 Vie
我创建了一个包含不同类型 subview 的社交帖子回收 View 。每个 child 多个 layout.recyclerview 工作正常,唯一的问题是 recyclerview 滚动不流畅。 我
我有一个像这样的 View 模型 - private val viewState = SchoolsViewState() fun onViewOpened() = Trans
我正在研究 Android 的应用程序接近完成它但我在 recyclerView 中发现了问题,我不知道如何在 recyclerView 的 Item 的 TextView 上实现点击监听器? (当我
我正在做一个 RecyclerView 示例。问题是,当我在列表中添加第一个项目时,它会在回收 View 中正确显示该项目,但我添加的下一个项目不会显示在回收 View 中。 请帮帮我。 适配器代码是
我想问一下我如何从适配器回收器 View 调用 Activity 中的方法。 在函数 buildRecyclerView 中设置适配器: private void buildRecyclerView(
这个问题在这里已经有了答案: Custom Adapter getView() method is not called (6 个答案) 关闭 6 年前。 我正在使用回收站 View ,但它没有显示
我有一个回收站 View ,我在其中显示了自定义行,但该行未填满宽度。我已经添加了 match_parent 宽度,但它仍然只是包装内容。 我的回收站 View -:
我一直在使用回收器 View 在我的 fragment 上显示 15 张图像。图像位于可绘制文件夹中。我尝试了外部 View 来执行此操作,但速度要慢得多并且滞后很多。因此我使用回收者 View 来解
我的问题是我希望回收站 View 响应对整个 View 的点击,而不是对回收站 View 具有的每个项目的单独点击 viewModel.handleClick()}"
以下是我的行项目的布局:
我正在处理 Recycler View ,在这里我将三个回收器 View 水平放置在布局中。问题是第二个和第三个回收器 View 项目显示但无法滚动,即使在内部使用嵌套滚动并特此附加xml。请建议我如
我是一名优秀的程序员,十分优秀!