Как отобразить сообщение в определенном пузыре в текстовом приложении? - PullRequest
0 голосов
/ 01 сентября 2018

Я сохранил сообщение и все другие необходимые вещи в переменных, и теперь я хочу отобразить сообщение пользователям в их определенных всплывающих подсказках.

Отправитель должен видеть сообщение в сером пузыре, а получатель должен видеть сообщение в фиолетовом пузыре.

Я использую базу данных Firebase для реализации этого, а не FCM. Также сообщения и другая необходимая информация хранятся так:

Здесь username Vasu - получатель.

database

Для хранения значений слушатель используется следующим образом:

DatabaseReference rRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uref = rRef.child("users"); //users is the main parent child of all other children in database

DatabaseReference TUidRef = usersRef.child(td);
        Log.i("bang",td);

        TUidRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                ms = dataSnapshot.child("rec_msg").getValue(String.class);
                fUid = dataSnapshot.child("fromUID").getValue(String.class);
                st = dataSnapshot.child("rec_secret").getValue(String.class);

                int km = 0;
                try {
                    km = Integer.parseInt(st);
                }
                catch (NumberFormatException e) {
                    Log.d("NumberError:", "Can't convert");
                }

                if(ms!=null && !ms.equals(""))
                    addMessageBox(ms,km);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                throw databaseError.toException();
            }
        });

td - это uid дочернего получателя, в котором хранятся все вещи.

Я использую addMessageBox(), как показано ниже, но он НЕ показывает сообщение для получателя, он просто показывает сообщение для отправителя (в его устройстве).

private void addMessageBox(String message, int k){

           TextView tv = new TextView(Main5Activity.this);
           message = decryptMessage(message,k);
           tv.setPadding(20, 30, 30, 20);
           tv.setTextSize(1, (float) 20.1);

           if(tUid!=null && fromUid!=null) {
               Log.i("toUID", tUid);
               Log.i("fromUID", fromUid);
           }

           LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
           lp2.weight = 1.0f;

           if (mAuth.getCurrentUser().getUid().equals(tUid)){

               tv.setText(message);
               lp2.gravity = Gravity.START;
               tv.setBackgroundResource(R.drawable.rounded_rectangle_violet);

            }

           else if (mAuth.getCurrentUser().getUid().equals(fromUid)) {

               tv.setText(message);
               lp2.gravity = Gravity.END;
               tv.setBackgroundResource(R.drawable.rounded_rectangle_grey);

           }

           tv.setLayoutParams(lp2);
           layout.addView(tv);

           //scroll the text to the end of the screen, auto scrolling

           scrollView.post(new Runnable()
           {
               public void run()
               {
                   scrollView.fullScroll(View.FOCUS_DOWN);
               }
           });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...