Другое значение дочернего ключа, но те же значения данных База данных Firebase - PullRequest
0 голосов
/ 09 мая 2020

У меня есть данные, которые состоят из уникального идентификатора, имени пользователя, электронной почты и т. Д. c, где только UID является уникальным и используется в качестве ключа, так как при поиске пользователю БД необходимо ввести UID.

Итак, если я вижу всю БД через приложение, он показывает имя пользователя дважды, так как есть разные UID. Вместо этого мне нужно, чтобы имя пользователя отображалось только один раз.

образец снимка экрана базы данных:

Firebase-root
       |
       --- Users
            |
            --- 9638527410
            |    |
                 --- userName: "John Doe"
            |    |
                 --- emailAddress: "John@Doe.com"
            |
            --- 9876543210
            |    |
                 --- userName: "John Doe"
            |    |
                 --- emailAddress: "John@Doe.com"

Теперь, когда я пытаюсь получить данные, приложение показывает Android Приложение Результат получения

Пример кода

 private void fetch_items() {
        try {
            ListView listView_items = findViewById(R.id.c_listView);

            Query query = databaseReference.orderByChild("username");

            FirebaseListOptions<firebase_username> firebaseListOptions = new FirebaseListOptions.Builder<firebase_username>().setQuery(query,firebase_username.class).                       setLayout(android.R.layout.activity_list_item).setLifecycleOwner(this).build();

            FirebaseListAdapter<firebase_username> firebaseListAdapter =
                    new FirebaseListAdapter<firebase_username>(firebaseListOptions) {

                        @Override
                        protected void populateView(@NonNull View v, @NonNull firebase_username model, int position) {

                            ((TextView) v.findViewById(android.R.id.text1)).setText(model.get_username());
                        }

                    };

            listView_items.setAdapter(firebaseListAdapter);
        } catch (Exception e) {
            Log.e("Error", e.toString());
        }
    }
...