2016-04-05 15 views
2

私はRecyclerViewを持つフラグメントを持つActivity1を持っています。 リストの項目を選択すると、その項目を変更するActivity2が開始されます。 Activity2が終了した後、Activity1に戻り、私はRecyclerViewが先にActivity2の状態(保存済みの項目の状態)を描画してから、onActivityResultにデータの更新セットを配信するrestartLoader()を実行し、RecyclerViewを新しいデータ。Android RecyclerView描画の問題(フリッカー)

この現象の問題は、RecyclerView が最初に古いデータを描画して新しいデータで再描画するため、がちらつくことです。私はいつもActivity1.onActivityResult()でrefreshLoader()を使用したいと思っていますが、このようなちらつきを避ける良い方法はありますか?


追加の合併症は、私はこれはあなたが使用することができますリサイクラービューのちらつきの更新プログラムを削除するには...もっと

+0

はあなただけnotifyItemchanged(getAdapterPositionを())を使用してではなく、全体よりもsingleitemのデータを更新することができます任意の方法はあり;? – erluxman

+0

アイテムが削除されたり、他のアクティビティによってリストに追加される可能性もあります。技術的には、DBから全員をリロードすることは、単一項目を追跡するよりも普遍的なアプローチと思われる。 – Califf

+0

申し訳ありませんがあなたが意味するものを得ることができませんでしたか? – erluxman

答えて

4

点滅に追加されます... recycleviewが空になったときに表示するために、空のビューを使用することである。

N - あなたは

notifyItemChanged(int position) 

を使用する必要があります

RecyclerView.ItemAnimator animator = mRecyclerView.getItemAnimator(); 
    if (animator instanceof SimpleItemAnimator) { 
     ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); 
    } 
はRecyclerView内の項目を更新するには位置の項目が変更されたことを登録されたオブザーバーに通知する。代わりに notifyDataSetChanged()

+0

助けてくれてありがとう! – Califf

+0

@Califfしかし、これは項目を追加すると機能していないようですが、リスト内の多くの項目を押して、ちらつきが発生します。 –

関連する問題