如何在Java Android中获取当前用户的子值

如何在Java Android中获取当前用户的子值,java,parent-child,Java,Parent Child,我有一个社交媒体应用程序,但从用户角度来看,它应该是一对一的好友比例,而不是一对多。我需要能够从孩子“已连接配偶”中提取信息,我似乎遇到了麻烦。我发现了一些我目前正在使用的代码,但它同时吸引了所有的用户和孩子。我只想获取当前用户的信息。如何使用valueeventlistener(或其他工具)仅为当前用户从“ConnectedPartner”子项中提取信息 这是我的Firebase数据库: 这是我的密码: public class GetUsernames extends AppCompatA

我有一个社交媒体应用程序,但从用户角度来看,它应该是一对一的好友比例,而不是一对多。我需要能够从孩子“已连接配偶”中提取信息,我似乎遇到了麻烦。我发现了一些我目前正在使用的代码,但它同时吸引了所有的用户和孩子。我只想获取当前用户的信息。如何使用valueeventlistener(或其他工具)仅为当前用户从“ConnectedPartner”子项中提取信息

这是我的Firebase数据库:

这是我的密码:

public class GetUsernames extends AppCompatActivity {
ArrayList<String> array = new ArrayList<>();
ArrayAdapter adapter;
ArrayList<String> sparray = new ArrayList<>();
ArrayAdapter spadapter;
String user = FirebaseAuth.getInstance().getCurrentUser().getEmail();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_get_usernames);
    setTitle("" + user);

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

    DatabaseReference usersdRef = rootRef.child("users");
    DatabaseReference spousedRef = rootRef.child("users");

    ValueEventListener seventListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            for (DataSnapshot ds : dataSnapshot.getChildren()){
                String connectsp = ds.child("connectedspouse").getValue(String.class);
                Log.i("SP TAG", "Current Connected Spouses are -> " + connectsp);
                sparray.add(connectsp);
            }
            final ListView spListView = findViewById(R.id.sListView);
       spadapter = new ArrayAdapter(GetUsernames.this, android.R.layout.simple_list_item_1, sparray);
            spListView.setAdapter(spadapter);
        }

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

    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                String names = ds.child("email").getValue(String.class);
                Log.i("TAG", "Current Users are =>  " + names);
                array.add(names);
            }
            final ListView useristView = findViewById(R.id.uListView);
            adapter = new ArrayAdapter(GetUsernames.this, android.R.layout.simple_list_item_1,array);
            useristView.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    };
    usersdRef.addListenerForSingleValueEvent(eventListener);
    spousedRef.addListenerForSingleValueEvent(seventListener);
   }
   }
public类GetUsernames扩展了AppCompative活动{
ArrayList数组=新的ArrayList();
阵列适配器;
ArrayList sparray=新的ArrayList();
ArrayAdapter spadapter;
字符串user=FirebaseAuth.getInstance().getCurrentUser().getEmail();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u get\u用户名);
setTitle(“+”用户);
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference usersdRef=rootRef.child(“用户”);
DatabaseReference-spoosedref=rootRef.child(“用户”);
ValueEventListener seventListener=新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String connectsp=ds.child(“connectedparty”).getValue(String.class);
Log.i(“SP标签”,“当前连接的配偶为->”+连接SP);
sparray.add(connectsp);
}
最终列表视图spListView=findViewById(R.id.sListView);
spadapter=newArrayAdapter(GetUsernames.this,android.R.layout.simple\u list\u item\u 1,sparray);
spListView.setAdapter(spadapter);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
};
ValueEventListener eventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String name=ds.child(“email”).getValue(String.class);
Log.i(“标记”,“当前用户=>”+名称);
数组。添加(名称);
}
最终列表视图useristView=findviewbyd(R.id.uListView);
adapter=newarrayadapter(GetUsernames.this,android.R.layout.simple\u list\u item\u 1,数组);
setAdapter(适配器);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
};
UsersRef.addListenerForSingleValueEvent(eventListener);
SpuesedRef.addListenerForSingleValueEvent(seventListener);
}
}
这是我的XML

    <ListView
        android:id="@+id/sListView"
        android:layout_width="match_parent"
        android:layout_height="275dp"
        android:layout_marginTop="50dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/uListView"
        android:layout_width="match_parent"
        android:layout_height="275dp"
        android:layout_marginTop="100dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/sListView" />

这是AVD的输出,它当前打印所有用户和连接的配偶。我希望它只打印当前用户及其已连接的配偶

再次感谢您事先的帮助