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