Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按签名用户显示子项_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 按签名用户显示子项

Android 按签名用户显示子项,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,您好,我是firebase的新手,需要帮助显示firebase的子项,这些子项包含与签名用户相同的用户ID 我只需要显示签名用户的子项 这是我的密码 私人消防队 private DatabaseReference fNotesDatabase; ArrayAdapter adapter; ListView listView; ArrayList<String> arraylist = new ArrayList<>(); @Override protected voi

您好,我是firebase的新手,需要帮助显示firebase的子项,这些子项包含与签名用户相同的用户ID

我只需要显示签名用户的子项

这是我的密码 私人消防队

private DatabaseReference fNotesDatabase;
ArrayAdapter adapter;
ListView listView;
ArrayList<String> arraylist = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_education);
    fAuth = FirebaseAuth.getInstance();
    listView = findViewById(R.id.listview);
    fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes").child("education");


    fNotesDatabase.addListenerForSingleValueEvent(new ValueEventListener(){
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot datas: dataSnapshot.getChildren()){
                String values = datas.getKey();
                arraylist.add(values);
                adapter = new ArrayAdapter(Education.this, android.R.layout.simple_list_item_single_choice, arraylist);
                listView.setAdapter(adapter);

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
私有数据库参考fNotesDatabase;
阵列适配器;
列表视图列表视图;
ArrayList ArrayList=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_education);
fAuth=FirebaseAuth.getInstance();
listView=findViewById(R.id.listView);
fNotesDatabase=FirebaseDatabase.getInstance().getReference().child(“注释”).child(“教育”);
fNotesDatabase.addListenerForSingleValueEvent(新值EventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot数据:DataSnapshot.getChildren()){
字符串值=datas.getKey();
arraylist.add(值);
adapter=new ArrayAdapter(Education.this,android.R.layout.simple\u list\u item\u single\u choice,arraylist);
setAdapter(适配器);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
尝试以下操作:

    FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    String userId = currentFirebaseUser.getUid();
    fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes").child("education");


    fNotesDatabase.addListenerForSingleValueEvent(new ValueEventListener(){
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot datas: dataSnapshot.getChildren()){
                String values = datas.getKey();

               db = FirebaseDatabase.getInstance().getReference().child(values).orderByKey().equalTo(userId);
               db.addListenerForSingleValueEvent(new ValueEventListener(){
                   @Override
               public void onDataChange(DataSnapshot dataSnapshot) {
                   //get data
             }

                    @Override
                public void onCancelled(DatabaseError databaseError) {

                }
             });

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
在这里,您可以添加对教育的引用,然后检索教育下的直接子项,然后使用
orderByKey()
检查是否有与当前登录用户相同的密钥并检索数据。

尝试以下操作:

    FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    String userId = currentFirebaseUser.getUid();
    fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes").child("education");


    fNotesDatabase.addListenerForSingleValueEvent(new ValueEventListener(){
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot datas: dataSnapshot.getChildren()){
                String values = datas.getKey();

               db = FirebaseDatabase.getInstance().getReference().child(values).orderByKey().equalTo(userId);
               db.addListenerForSingleValueEvent(new ValueEventListener(){
                   @Override
               public void onDataChange(DataSnapshot dataSnapshot) {
                   //get data
             }

                    @Override
                public void onCancelled(DatabaseError databaseError) {

                }
             });

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

在这里,您可以添加对
教育的引用
,然后在
教育
下检索直接子项,然后使用
orderByKey()
您可以检查是否存在与当前登录用户相同的密钥并检索数据。

是否可以尝试此代码并查看它是否与您一起工作:

FirebaseAuth mAuth = FirebaseAuth.getInstance();
 // get the current user-id to read data easly
String  currentUserId = mAuth.getCurrentUser().getUid();
DatabaseReference userRef = FirebaseDatabase.getInstance()             
   .getReference().child("notes").child("education");
 // get data to them
userRef.child(currentUserId).addValueEventListener(
            new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
      if(dataSnapshot.exists()){
         for(DataSnapshot datas: dataSnapshot.getChildren()){
            String values = datas.getKey();
            arraylist.add(values);
            adapter = new ArrayAdapter(Education.this,
             android.R.layout.simple_list_item_single_choice, 
             arraylist);
            listView.setAdapter(adapter);

         }
      }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

        }
});

您是否可以尝试此代码并查看它是否与您一起工作:

FirebaseAuth mAuth = FirebaseAuth.getInstance();
 // get the current user-id to read data easly
String  currentUserId = mAuth.getCurrentUser().getUid();
DatabaseReference userRef = FirebaseDatabase.getInstance()             
   .getReference().child("notes").child("education");
 // get data to them
userRef.child(currentUserId).addValueEventListener(
            new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
      if(dataSnapshot.exists()){
         for(DataSnapshot datas: dataSnapshot.getChildren()){
            String values = datas.getKey();
            arraylist.add(values);
            adapter = new ArrayAdapter(Education.this,
             android.R.layout.simple_list_item_single_choice, 
             arraylist);
            listView.setAdapter(adapter);

         }
      }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

        }
});

您似乎有一个类似于
/Education/Notes/$uid
的数据结构。因此,要阅读当前登录用户的笔记,请执行以下操作:

fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes").child("education");
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

fNotesDatabase.child(uid).addListenerForSingleValueEvent(new ValueEventListener(){
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ...

您似乎有一个类似于
/Education/Notes/$uid
的数据结构。因此,要阅读当前登录用户的笔记,请执行以下操作:

fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes").child("education");
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

fNotesDatabase.child(uid).addListenerForSingleValueEvent(new ValueEventListener(){
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ...


您希望在ListView中显示的确切数据是什么?因此,如果是
Y5o…
,您希望ListView包含一条名为
edu1
的字符串类型的记录?我希望只显示与当前登录用户具有相同用户ID的子孩子是的,Alex我只需要一条记录,或者当有更多子孩子时ren多于1那么同一个用户在哪里请在两个位置添加
Y5o…
内容的屏幕截图,
Notes
Users
。您希望在ListView中显示的确切数据是什么?因此在
Y5o…
的情况下,您希望ListView包含一条名为
edu的字符串类型的记录1
?我只想显示与当前登录用户具有相同用户ID的子用户是Alex我想只显示一条记录,或者当子用户多于1时,所有子用户都是同一个用户请在两个位置添加
Y5o…
内容的屏幕截图,
注释
用户
。您好,这不起作用吗s don’不要在代码中显示anythink数据库是Query还是如何定义的?当我将数据库定义为DatabaseReference时,我得到一个错误:“需要不兼容的类型:DtabaseReference Found:Query”是的,使用Query instead仍然不工作,因为它在ListView中没有显示任何项在第二个onDataChange中您应该向ListView添加项Hello它不工作它不显示任何内容您认为代码中的db是querry还是如何定义的?当我将db定义为DatabaseReference时,我得到一个错误“需要不兼容的类型:找到DTABaserReference:查询"是的,使用Query instead仍然不起作用,因为它在第二次数据更改中没有在ListView中显示任何项目。您应该向ListView添加项目不起作用Frank,因为他在
教育
节点和
用户ID
之间有
教育1
教育2
节点,我错过了。这确实需要反向索引。不是吗我不能工作Frank,因为他在
education
节点和
userid
之间有
edu1
edu2
,噢,该死,我错过了。这确实需要一个反向索引。