Не могу получить имя других пользователей - PullRequest
1 голос
/ 01 июля 2019

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

Активность сообщений:

public class MessageActivity extends AppCompatActivity {
    TextView username;
    FirebaseUser fuser;
    DatabaseReference reference;
    Intent intent;

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_message );
       TabLayout appBarLayout=findViewById ( R.id.tab_2);



            username=findViewById ( R.id.username1 );

            intent=getIntent ();
            String userid=intent.getStringExtra ( "userid" );
            fuser= FirebaseAuth.getInstance ().getCurrentUser ();
            reference= FirebaseDatabase.getInstance ().getReference ("users").child ( "FIRST NAME");
            reference.addValueEventListener ( new ValueEventListener () {
                @Override
                public void onDataChange (@NonNull DataSnapshot dataSnapshot) {
                    User user=dataSnapshot.getValue (User.class);
                    username.setText ( user.getFirstName () );

                }

                @Override
                public void onCancelled (@NonNull DatabaseError databaseError) {

                }
            } );
        }


    }

XML для активности сообщений

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MessageActivity">

    <TextView
        android:id="@+id/username6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Name" />

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00FFFFFF">

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/view_pager2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            >

        </androidx.viewpager.widget.ViewPager>

    </com.google.android.material.appbar.AppBarLayout>

</LinearLayout>

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

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

в базе данных у вас есть поле "FIRSTNAME" и в вашем коде у вас есть

.child ( "FIRST NAME");

Оба значения должны быть одинаковыми.Измените .child на этот

.child ( "FirstName");
1 голос
/ 02 июля 2019

Вы почти закончили, но просто забыли добавить другой идентификатор пользователя и получить другую информацию о пользователе: -

reference= FirebaseDatabase.getInstance ().getReference ("users").child("other user id").child ( "FIRST NAME");
            reference.addValueEventListener ( new ValueEventListener () {
                @Override
                public void onDataChange (@NonNull DataSnapshot dataSnapshot) {
                    User user=dataSnapshot.getValue (User.class);
                    username.setText ( user.getFirstName () );

                }

                @Override
                public void onCancelled (@NonNull DatabaseError databaseError) {

                }
            } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...