2017-04-05 102 views
0

我有RecyclerView及其RecyclerView.Adapter和查看人。我想作爲內部onClick()上刪除按鈕在ViewHolderRecyclerView notifyItemRemoved(位置)不能正常工作

int position = getAdapterPosition(); 
if(position > -1) 
{ 
Place place = placeList.remove(position); 
notifyItemRemoved(position); 
notifyItemRangeChanged(position, getItemCount()); 
} 

儘管去掉視圖和做動畫(名單也被影響),舊觀點(或下一個跟隨來刪除列表中的項目,代碼)仍然存在或再次繪製。 例如,如果列表以size = 5開始,那麼我嘗試刪除索引4,他刪除4,然後仍然繪製5個視圖。

編輯

如果我刪除notifyItemRangeChanged()那麼它是錯誤只如果我很快做刪除

2-點擊按鈕下面

1-點擊那個帶我到新查看

3-返回到我可以刪除的列表

4-開始刪除,併發生錯誤。即使List大小= 0(getItemCount被調用0),1項仍然保留。

如果我只調用NotifyDataSetChanged(),那麼它將刪除項目,但視圖只是停留在那裏!

讚賞任何幫助或建議。

謝謝。

編輯完整的類LINK

+0

我也面臨這個問題,並嘗試一切可用的在線,但沒有任何效果。但在我的情況下,它有時可以正常工作,雖然有時當我觸摸我的列表時,它會刪除空白空間 –

+0

@Vivek Mishra正常行爲,我點擊刪除,它沒有notifyItemRangeChanged()。但是,如果我去新的觀點,回去,>>錯誤發生 –

回答

0
lastImages.remove(position); (lastImages equals your array list) 
    newContentAdapter.notifyDataSetChanged(); 

它的作品。你必須在你的數組中刪除它而不是項目。然後通知適配器。這就是所有

+0

請檢查我的編輯 –

+0

我使用從活動中的回收視圖刪除項目。我在活動中刪除項目然後發送新數組從活動到適配器與此:.notifyDataSetChanged。所以所有問題都以這種方式消失了。 –

0

試試這個:

placeList.remove(position); 
notifyItemRemoved(position); 
+0

請檢查我的編輯。此外,這已經在我的代碼中,我沒有看到區別?! –

-1

你需要更新你的適配器;

在Adapter類中創建方法,您將在其中放置數據。

例如:setData(List<Place> data);

當名單最後一個項目,你需要寫:adapter.setData(null);

我有同樣的問題。只需設置list = null。就這些。

-1

使用下面的代碼它會解決你的問題。

​​
+0

我在刪除之前刪除了日誌大小之後,列表大小不是0 –

+0

您的意思是您刪除了所有行,仍然會以列表大小獲得一個。 –

+1

我刪除了所有的行,最後,1項仍然可見,但getItemCount = 0.您仍然可以在那裏繪製一個視圖 –