无法获取其他用户名

时间:2019-07-01 14:01:17

标签: android firebase-realtime-database

我正在尝试使用仅显示文本视图的聊天应用程序进行活动,该视图向我显示每个用户的名字,但是我获取的是已登录用户的名字,而不是其他用户的名字。这是我的数据库:

消息活动:

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 个答案:

答案 0 :(得分:2)

在数据库中,您已归档“ FIRSTNAME”,在代码中,您已归档

SELECT
    * 
FROM 
    [table]
WHERE 
    [column] like '%-'
    AND
    LEFT([column], (datalength([column])/2)-1) NOT LIKE '%[^0-9]%'

两个值必须相同。将.child更改为此

.child ( "FIRST NAME");

答案 1 :(得分:1)

您差不多完成了,但是只是忘记添加其他用户ID并获取其他用户信息:-

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) {

                }
            } );