我正在尝试使用仅显示文本视图的聊天应用程序进行活动,该视图向我显示每个用户的名字,但是我获取的是已登录用户的名字,而不是其他用户的名字。这是我的数据库:
消息活动:
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中出现我要交谈的用户的名字。
答案 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) {
}
} );