RecycleView刪除item問題

2021-07-16 01:26:11 字數 967 閱讀 4150

最近專案做的乙個recycleview。關於刪除item,在adapter裡面使用notityitemremoved()方法遇到的坑

@override

public void onbindviewholder ( final commonviewholder holder, final int position)

});}

這樣寫的話,很快會產生資料刪除錯亂和超出索引異常導致崩潰。

原因是函式裡面的傳入的引數position,它是在進行onbind操作時確定的,在刪除單項後,已經出現在畫面裡的項不會再有呼叫onbind機會,這樣它保留的position一直是未進行刪除操作前的postion值。

對於尚未進入畫面的單項來說,它會使用新的position值,這個值是正確的,如果在單項裡加上下面的**

holder.textview.settext(contentlist.get(position) + "-----" + string.valueof(position));
在刪除第一屏的一項後,向上滾動,會發現新滾上來的一行和它上面的一行的textview顯示是一樣的。

解決方法

一:

//或者使用getlayoutposition

contentlist.remove (holder .getadapterposition())

notifyitemremoved(holder.getadapterposition());

二:(推薦使用)

先remove,再notifyitemremoved, 最後再加上notifyitemrangechanged

remove:把資料從list中remove掉,

notifyitemremoved:顯示動畫效果

notifyitemrangechanged:對於被刪掉的位置及其後range大小範圍內的view進行重新onbindviewholder

RecycleView劃線操作

package com.bwf.tuanche.car select.view import android.content.context import android.content.res.typedarray import android.graphics.canvas import and...

RecycleView區域性重新整理

向指定位置插入item public final void notifyiteminserted int position 移除指定位置item public final void notifyitemremoved int position 更新指定位置item public final void...

Recycleview分頁載入

ui上無載入動畫 原理 當最後乙個item顯示時,執行載入操作 同理也可設定成最後某個item顯示時,提前執行載入操作 1 重寫recycleview滑動監聽 public abstract class loadmoreonscrolllistener extends recyclerview.on...