Отображение дочерних элементов подписанным пользователем - PullRequest
0 голосов
/ 31 мая 2019

Здравствуйте, я новичок в firebase и мне нужна помощь с отображением дочерних элементов firebase, которые содержат тот же идентификатор пользователя, что и подписанный пользователь

here is my database вот пользователи и edu1 полное шоу пользователя Мне нужно отобразить только подписчиков подписанного пользователя

и вот мой код частный FirebaseAuth fAuth;

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

        }
    });

Ответы [ 3 ]

0 голосов
/ 31 мая 2019

Можете ли вы попробовать этот код и посмотреть, работает ли он с вами:

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

        }
});
0 голосов
/ 31 мая 2019

Похоже, у вас есть структура данных типа /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) {
        ...
0 голосов
/ 31 мая 2019

Попробуйте следующее:

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

        }
    });

Здесь вы добавляете ссылку на education, затем извлекаете прямые дочерние элементы в education, затем, используя orderByKey(), вы можете проверить, есть ли ключ, равный текущему зарегистрированному пользователю, и получить данные.

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