Я пытаюсь изменить фоновое изображение гармошки imageview тому, кто отправил сообщение, если это был я, тогда фон был моим изображением, если это был другой, фон стал анонимным, проблема в том, что мой код работает, но иногда он меняется, как язначит, допустим, что фон отправленного сообщения зеленый, а полученный желтый, иногда отправленный желтый, а полученный зеленый, и когда я делаю обновление для макета, он работает отлично, вот мой код
Сначала мойrecyclerview
private void intitializingRecyclerView()
{
mMessagesList.setLayoutManager(new LinearLayoutManager(this));
Query mQuery = mMyMessagesRef;
FirebaseRecyclerOptions mOptions = new FirebaseRecyclerOptions.Builder<Message>()
.setQuery(mQuery,Message.class).build();
mAdapter = new FirebaseRecyclerAdapter<Message, MessagesHolder>(mOptions) {
@Override
protected void onBindViewHolder(@NonNull MessagesHolder holder, int position, @NonNull Message model) {
if (model.getFrom().equals(myId))
{
holder.fillSentMessage(Image,model.getMessages());
} else if (!model.getFrom().equals(myId))
{
holder.fillReceivedMessage("",model.getMessages());
}
holder.showElements();
}
@NonNull
@Override
public MessagesHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_sent_message,parent,false);
return new MessagesHolder(view,parent.getContext());
}
};
mMessagesList.setAdapter(mAdapter);
}
тогда мой sendButton, что я написал в нем, это просто
mMessage.setText("");
mMessagesList.scrollToPosition(count - 1);
mAdapter.notifyDataSetChanged();
и мой HolderClass
public class MessagesHolder extends RecyclerView.ViewHolder {
private CircleImageView mImage;
private TextView mMessage;
private ConstraintLayout mLayout;
Context context;
public MessagesHolder(@NonNull View itemView, Context context) {
super(itemView);
this.context = context;
mImage = itemView.findViewById(R.id.iv_sent_message);
mMessage = itemView.findViewById(R.id.tv_sent_message);
mLayout = itemView.findViewById(R.id.cl_message_layout);
}
public void fillSentMessage(final String Image, String Message) {
Picasso.get().load(Image).networkPolicy(NetworkPolicy.OFFLINE).into(mImage, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Picasso.get().load(Image).into(mImage);
}
});
mMessage.setText(Message);
}
public void fillReceivedMessage(final String Image, String Message) {
mLayout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
if (!Image.isEmpty()) {
Picasso.get().load(Image).networkPolicy(NetworkPolicy.OFFLINE).into(mImage, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Picasso.get().load(Image).into(mImage);
}
});
} else
{
Picasso.get().load(R.drawable.anynomous).into(mImage);
}
mMessage.setTextColor(context.getResources().getColor(R.color.white));
mMessage.setText(Message);
mMessage.setBackgroundResource(R.drawable.recieved_message);
}
public void showElements()
{
mMessage.setVisibility(View.VISIBLE);
mImage.setVisibility(View.VISIBLE);
mLayout.setVisibility(View.VISIBLE);
}
}
спасибо