首页 > 解决方案 > 如果回收站视图项中的数据为空,则不显示视图持有者

问题描述

我想检查来自服务器的数据是否为空。如果不为空,则在我的情况下填充回收站视图项是 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
}

标签: androidkotlin

解决方案


你应该这样做:

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()
        }

推荐阅读