如果回收者视图项中的数据为空,则不显示视图持有者

时间:2018-11-20 13:24:57

标签: android kotlin

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

2 个答案:

答案 0 :(得分:0)

您应该执行以下操作:

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

答案 1 :(得分:0)

即使您更改$ cat student_check.sh Student_Check() { if [ $# -eq 0 ] ; then echo "No file specified" elif [ $# -eq 1 ] ; then echo success else echo "Invalid input" exit fi } echo Test 0 Student_Check echo Test 1 Student_Check 1 echo Test 2 Student_Check 1 2 $ ./student_check.sh Test 0 No file specified Test 1 success Test 2 Invalid input 的可见性,CardView中的空白也将存在。
最好在设置适配器之前从列表中删除空项目:

RecyclerView