2017-04-05 21 views
0

私はRecyclerViewRecyclerView.Adapterとビューホルダーを持っています。私は、ビューを削除すると、(リストには、影響を受けます)古いビューをアニメーションをやって(またはより低い1にもかかわらずViewHolderRecyclerView notifyItemRemoved(位置)が正しく動作しない

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

に削除ボタンにonClick()内部で次のように、コードをリストから項目を削除しようとしています)がまだ存在するか、再度描画されます。 たとえば、リストがsize = 5で始まり、インデックス4を削除しようとすると、4が削除されてから5つのビューが引き出されます。 10 4-削除を開始し、バグが発生します。 Listサイズ= 0(getItemCountが0で呼び出されています)でも1の項目が残ります。

私がNotifyDataSetChanged()を呼び出すと、アイテムは削除されますが、ビューはそのまま残ります。

ご迷惑をおかけして申し訳ございません。

ありがとうございました。

EDIT完全なクラス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

あなたは、アダプタを更新する必要があります。

データを配置するアダプタクラスのメソッドを作成します。例えば

setData(List<Place> data);

がリストにあなたが記述する必要が最後の項目:adapter.setData(null)を。

私は同じ問題を抱えていました。 list = nullを設定するだけです。それだけです。

-1

以下のコードを使用すると、問題を解決できます。

​​
+0

削除する前にログサイズを変更しましたが、リストのサイズは0ではありません –

+0

すべての行を削除したにもかかわらず、リストのサイズが1つでもあることを意味します。 –

+1

すべての行を削除しましたが、最終的に1つのアイテムがまだ表示されていますが、getItemCount = 0です。まだ描画されているビューは –

関連する問題