android - 如果回收站视图项中的数据为空,则不显示视图持有者
问题描述
我想检查来自服务器的数据是否为空。如果不为空,则在我的情况下填充回收站视图项是 CardView,如果它为空,则根本不显示 CardView。
在我的回收器视图适配器中,我有这个:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var firstName = itemsList[position].firstName
var lastName = itemsList[position].lastName
if (firstName.isNullOrEmpty() && lastName.isNullOrEmpty()) {
//...what shoud i write here ?
} else {
holder.name?.text = firstName + " " + lastName
}
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val name = itemView.name
}
解决方案
你应该这样做:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var firstName = itemsList[position].firstName
var lastName = itemsList[position].lastName
if (firstName.isNullOrEmpty() && lastName.isNullOrEmpty()) {
yourCardView.visibility = View.INVISIBLE //or GONE if you do not want to keep its space
holder.name?.text = ""
} else {
yourCardView.visibility = View.VISIBLE
holder.name?.text = firstName + " " + lastName
}
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val name = itemView.name
}
但是如果 cardview 是您的根项并且您根本不想显示列表项,则应该在适配器构造函数中使用如下代码更改主列表:
filteredList = itemsList?.filter {
(it.firstname.isNullOrEmpty() || it.lastName.isNullOrEmpty()).not()
}
推荐阅读
- java - 如何在android中预先加载网页并将它们保存到可以提供给viewholder以在cardview中显示网页的对象中?
- java - 将 Android 设备设置为 HTTP 代理服务器?
- html - 如何将我的文本定位在 div 的顶部,而不是底部?
- ios - 未解决的错误 Error Domain=NSCocoaErrorDomain Code=132001 "(null)"
- facebook - 如何使用从 Facebook api 收到的 attachment_id 取回附件?
- swift - 闭包调用中的额外参数
- r - 在创建函数时,希望其中一个参数成为我的数据中的变量
- javascript - 加载网站主页的 JavaScript 函数只工作一次
- javascript - Lodash 去抖异步/等待
- python - Matplotlib 中心轴