изменение фона полученного и отправленного сообщения в программе recyclerview (firebase) - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь изменить фоновое изображение гармошки 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);

    }

}

спасибо

1 Ответ

0 голосов
/ 23 сентября 2018

спасибо, я решил это, добавив еще одно выражение if, проверяющее, совпадает ли код с кодом моего друга

 if (model.getFrom().equals(myId))
                {
                    holder.fillSentMessage(Image,model.getMessages());
                } else if (model.getFrom().equals(friendId))
                {
                    holder.fillReceivedMessage("",model.getMessages());
                }
                holder.showElements();}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...