gpt4 book ai didi

android - FirebaseRecyclerAdapter 在更新时使我的行闪烁

转载 作者:行者123 更新时间:2023-11-29 19:29:20 25 4
gpt4 key购买 nike

我正在使用 Firebase 创建一个聊天应用。我正在使用来自 firebase-ui 的 recycleViewFirebaseRecyclerAdapter 来显示所有消息。我的问题是当有人喜欢一条消息(如下所示)时,整个布局都会闪烁。如果我也更改 Firebase 控制台上的消息,就会发生这种情况。在我的 View 持有者中,我只根据我的模型更新心脏 ImageView 。我使用的是 0.6.2 版,但它仍然发生在 1.0.0 上。

关于我的适配器,我扩展了 FirebaseRecyclerAdapter 并且因为我正在使用 viewTypes 我已经覆盖了以下方法:

  • 获取项目 View 类型
  • 填充ViewHolder
  • onCreateViewHolder

enter image description here

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);
}

关于android - FirebaseRecyclerAdapter 在更新时使我的行闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com