2016-11-05 10 views
1

私はFirebaseを使ってチャットアプリを作成しています。 firebase-uiのrecycleViewFirebaseRecyclerAdapterを使用してすべてのメッセージを表示しています。私の問題は、誰かがメッセージのようなもの(下図参照)がレイアウト全体を点滅させるときです。 Firebase Consoleでメッセージを変更した場合も同様です。私のビューホルダーでは、私のモデルにしたがって、心臓画像のビューのみを更新します。私はバージョン0.6.2を使用していますが、それは1.0.0でも起こります。FirebaseRecyclerAdapterは更新時に行を点滅します

  • getItemViewType
  • populateViewHolder
  • onCreateViewHolder

enter image description here

:私は、私は次のメソッドをオーバーライドしてきた viewTypesを使用していますので、私のアダプタについて

、私はFirebaseRecyclerAdapter拡張し、

class ChatMessageOutViewHolder extends RecyclerView.ViewHolder { 

    @BindView(R.id.message_out_content) 
    TextView messengerView; 

    @BindView(R.id.message_out_heart) 
    ImageView heartView; 

    @BindView(R.id.message_out_heart_likes) 
    TextView likesView; 

    @BindView(R.id.message_out_time) 
    TextView timeView; 

    ChatMessageOutViewHolder(View v) { 
     super(v); 
     ButterKnife.bind(this, v); 
    } 

    void apply(final ChatMessage model) { 
     messengerView.setText(model.content); 
     likesView.setText(model.likes == null ? "" : String.valueOf(model.likes.size())); 

     Drawable image = ContextCompat.getDrawable(mContext, R.drawable.ic_fav_1); 
     if (model.likes != null && model.likes.contains(mUserId)) { 
      image = ContextCompat.getDrawable(mContext, R.drawable.ic_fav_2); 
     } 

     heartView.setImageDrawable(image); 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm", Locale.getDefault()); 
     timeView.setText(simpleDateFormat.format(new Date(model.getTimeStamp()))); 

     heartView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mListener != null) { 
        mListener.onHeartClick(model); 
       } 
      } 
     }); 
    } 
} 

答えて

2

私は考え出しました! FirebaseRecyclerAdapterのバグではありません。これは、RecyclerViewのデフォルト動作のようです。それを解決するには、設定後に私のローカルリファレンスを追加してください。

RecyclerView.ItemAnimator animator = mRecyclerView.getItemAnimator(); 
if (animator instanceof SimpleItemAnimator) { 
    ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); 
} 
関連する問題