Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android,Kotlin:Recyclerview,如何阻止显示最后一项,但将其传递给适配器_Android_Kotlin_Android Recyclerview - Fatal编程技术网

Android,Kotlin:Recyclerview,如何阻止显示最后一项,但将其传递给适配器

Android,Kotlin:Recyclerview,如何阻止显示最后一项,但将其传递给适配器,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我有一个带有ListAdapter的Recyclerview,该ListAdapter绑定项目,但是我必须将它的下一个元素作为参数提供给ListAdapter中的bind方法,因为它需要下一个元素的一些信息。但是,最后一个元素不需要显示为自己的列表项,因为它不包含我必须显示的信息 编辑:最后一项仍应传递给适配器,因为它包含有关其上一项的重要信息 RecyclerView只显示基本的项目布局,而不显示列表中的任何数据,如果我设置最后一个项目的可见性(这是一个约束布局)视图,那么它在Recycler

我有一个带有ListAdapter的Recyclerview,该ListAdapter绑定项目,但是我必须将它的下一个元素作为参数提供给ListAdapter中的bind方法,因为它需要下一个元素的一些信息。但是,最后一个元素不需要显示为自己的列表项,因为它不包含我必须显示的信息

编辑:最后一项仍应传递给适配器,因为它包含有关其上一项的重要信息

RecyclerView只显示基本的项目布局,而不显示列表中的任何数据,如果我设置最后一个项目的可见性(这是一个约束布局)视图,那么它在RecyclerView中仍然显示空白

我用这个:

override fun onBindViewHolder(holder: RouteDetailViewHolder, position: Int) {
        val item = getItem(position)

        if (position < itemCount - 1) {
            val nextItem = getItem(position + 1)
            holder.bind(item, nextItem)
        }

    }
覆盖BindViewHolder(支架:RoutedDetailViewHolder,位置:Int){
val item=getItem(位置)
如果(位置<项目计数-1){
val nextItem=getItem(位置+1)
固定器绑定(项目,下一项)
}
}
现在我的问题是:如何防止Recyclerview显示最后一项或空白

如果您需要更多信息或代码,请告诉我 谢谢你的私人物品(位置:Int){


}

如果您使用了Listadapter,则只需按删除最后一项即可

dataset.removeat(dataset.size-1) 
然后使用数据集调用submit方法

recyclerview.submit(dataset)
如果您有简单的适配器,那么使用

dataset.removeat(dataset.size()-1);
notifyItemRemoved(dataset.size()-1);

最好的方法是,从数据列表中删除最后一项,然后将其传递给适配器,或者使用已删除的列表项创建适配器

val myList: MutableList<T> = mutableListOf<T>()
myList.removeAt(mutableListOf.lastIndex)

myAdapter.update(myList)

首先,感谢您的回答,他们帮助我找到了解决方案

我修改了适配器的构造函数,它实际上是ListAdapter的一个子类,并将最后一个列表项传递到适配器中,然后将其从列表中删除

我还修改了onBindViewHolder:

 override fun onBindViewHolder(holder: RouteDetailViewHolder, position: Int) {
        val item = getItem(position)

        if (position < itemCount - 1) {
            val nextItem = getItem(position + 1)
            holder.bind(item, nextItem)
        }

        else {

            if (lastItem != null) {
                holder.bind(item, lastItem)
            }
        }
    }
覆盖BindViewHolder(支架:RoutedDetailViewHolder,位置:Int){
val item=getItem(位置)
如果(位置<项目计数-1){
val nextItem=getItem(位置+1)
固定器绑定(项目,下一项)
}
否则{
if(lastItem!=null){
持有者绑定(项目,最后一个项目)
}
}
}

我希望其他人也会觉得这很有用

您可以覆盖getItemCount()ListAdapter中的方法,并返回list.size-1,该方法阻止显示最后一项

在将数据显示到RecycleService中时,将position-1放入适配器类的bindViewHolder中,然后从
ListAdapter
继承并重写
getItemCount
方法返回
list.size-1
Tnx获取您的答案。最后一项包含前一项的重要信息,因此我只能在前一项绑定后调用它,对吗?顺便说一句,我使用ListAdapter你需要从你的活动中调用它,或者说你的recycler视图被定义在何处删除它。Tnx对于你的答案,ListAdapter需要最后一项,因为它包含关于前一项的信息谢谢你的回答,但我想将列表的最后一项传递给适配器我已经解决了我的问题,谢谢你的帮助。梅西沙酒店
   class MyAdapter(private val myData: MutableList<T>):RecyclerView.Adapter<MyViewHolder>() {
       ...


    fun update(myList:MutableList<T>) {
       myData.clear()
       myData.addAll(myList)
       notifyDataSetChanged()
    }
  }
fun onBindViewHolder (holder: MyViewHolder, pos: Int) {
  if (pos == data.lastIndex) {
    viewHolder.itemView.visibility = GONE

    // OR / AND

    viewHolder.itemView.setHeight(0)
  }
}
 override fun onBindViewHolder(holder: RouteDetailViewHolder, position: Int) {
        val item = getItem(position)

        if (position < itemCount - 1) {
            val nextItem = getItem(position + 1)
            holder.bind(item, nextItem)
        }

        else {

            if (lastItem != null) {
                holder.bind(item, lastItem)
            }
        }
    }