![](/img/trans.png)
[英](Android Kotlin) RecyclerView Adapter methods not called: empty RecyclerView being shown
[英]Android, Kotlin: Recyclerview, how to prevent the last item to be shown, but pass it to the adapter
我有一個帶有綁定項目的 ListAdapter 的 Recyclerview,但是我必須給 ListAdapter 中的 bind 方法,它也是下一個元素作為參數,因為它需要來自下一個元素的一些信息。 然而,最后一個元素不需要顯示為自己的列表項,因為它不包含我必須顯示的那種信息。
編輯:最后一項仍應傳遞給適配器,因為它包含有關其前一項的重要信息
RecyclerView 只顯示基本的項目布局,沒有來自列表的任何數據,如果我設置了最后一個項目的可見性(這是一個約束布局) View.GONE ,它仍然在 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)
}
}
現在我的問題是:如何防止 Recyclerview 顯示最后一項或空白?
如果您需要更多信息或代碼,請告訴我謝謝
私人樂趣刪除項目(位置:Int){
mDataSet.removeAt(position)
notifyItemRemoved(position)
notifyItemRangeChanged(position, mDataSet.size)
}
如果您使用過 Listadapter,則只需刪除最后一項
dataset.removeat(dataset.size-1)
然后使用數據集調用提交方法
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)
適配器類
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)
}
}
首先,感謝您的回答,他們幫助我找到了解決方案。
我修改了適配器的構造函數,它實際上是 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)
}
}
}
我希望其他人也可能會覺得這很有用
您可以覆蓋ListAdapter 中的getItemCount()方法並返回list.size - 1以防止顯示最后一項
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.