RecyclerView 不同步
RecyclerView goes out of Sync
我创建了一个 firebase 聊天。它使用 RecyclerView
和 CardViews
来显示消息。我正在更改 RecyclerView.Adapter
的 OnBindViewHolder
方法中的 CardView
Gravity,因此发件人消息将在一侧,其他人在另一侧(WhatsApp)。
这是我的代码,
public void onBindViewHolder(ViewHolder holder, int position) {
final MessageItem messageItem = messageItems.get(position);
holder.name.setText(messageItem.getSenderName());
holder.message.setText(messageItem.getMessage());
if(messageItem.getFrom() == new UserLocalStore(context).getUserDetails().getId()){
holder.linearLayout.setGravity(Gravity.RIGHT);
}
}
这在第一次加载消息时工作正常
但是当我滚动浏览或发送新消息时不同步
这可能是什么原因?我也尝试更新 onViewAttachedToWindow
和 onViewRecycled
方法中的重力。
尝试更改此代码
if(messageItem.getFrom() == new UserLocalStore(context).getUserDetails().getId()){
holder.linearLayout.setGravity(Gravity.RIGHT);
}else{
holder.linearLayout.setGravity(Gravity.LEFT);
}
您需要在 else 中设置左引力,因为滚动时 recyclerview 会回收视图
我创建了一个 firebase 聊天。它使用 RecyclerView
和 CardViews
来显示消息。我正在更改 RecyclerView.Adapter
的 OnBindViewHolder
方法中的 CardView
Gravity,因此发件人消息将在一侧,其他人在另一侧(WhatsApp)。
这是我的代码,
public void onBindViewHolder(ViewHolder holder, int position) {
final MessageItem messageItem = messageItems.get(position);
holder.name.setText(messageItem.getSenderName());
holder.message.setText(messageItem.getMessage());
if(messageItem.getFrom() == new UserLocalStore(context).getUserDetails().getId()){
holder.linearLayout.setGravity(Gravity.RIGHT);
}
}
这在第一次加载消息时工作正常
但是当我滚动浏览或发送新消息时不同步
这可能是什么原因?我也尝试更新 onViewAttachedToWindow
和 onViewRecycled
方法中的重力。
尝试更改此代码
if(messageItem.getFrom() == new UserLocalStore(context).getUserDetails().getId()){
holder.linearLayout.setGravity(Gravity.RIGHT);
}else{
holder.linearLayout.setGravity(Gravity.LEFT);
}
您需要在 else 中设置左引力,因为滚动时 recyclerview 会回收视图