我使用火力地堡创建一个聊天应用。我正在使用recycleView
and FirebaseRecyclerAdapter
from firebase-ui来显示所有消息。我的问题是当有人像消息(你可以见下文)的整个布局闪烁。如果我也更改了Firebase控制台上的消息,则会发生这种情况。在我看来,持有人,我只用我的模型,根据更新,心脏图像视图。我使用的是0.6.2版,但仍然在1.0.0版上发生。
关于我的适配器,我谨向FirebaseRecyclerAdapter
因为我用viewTypes
我已经重写了以下方法:
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);
}
}
});
}
}
我想通了!!这不是FirebaseRecyclerAdapter上的错误。听起来像是RecyclerView的默认行为。为了解决它只需添加后设置我的本地参考以下行。
RecyclerView.ItemAnimator animator = mRecyclerView.getItemAnimator();
if (animator instanceof SimpleItemAnimator) {
((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句