Отображение данных курса из Firebase для каждого пользователя в Android - PullRequest
0 голосов
/ 08 декабря 2018
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.activity_course_fragment, null);

    textView=v.findViewById(R.id.list);

    final  DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    Query usersQuery = rootRef.child("Users").orderByChild("name").equalTo("ANAND");


    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(final DataSnapshot ds : dataSnapshot.getChildren()) {
                String course = ds.child("course").getValue(String.class);
                Log.d(TAG, course);


                Query courseRef = rootRef.child("Course").orderByChild("name").equalTo(course);
                ValueEventListener eventListener = new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot ds : dataSnapshot.getChildren()) {
                            String name = ds.child("name").getValue(String.class);
                            final String url = ds.child("url").getValue(String.class);
                            Log.d(TAG, name + " / " + url);
                            textView.setText(name);
                            textView.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    Intent intent = new Intent(Intent.ACTION_VIEW);
                                    intent.setData(Uri.parse(url));
                                    startActivity(intent);

                                }
                            });
                        }


                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
                    }
                };
                courseRef.addListenerForSingleValueEvent(eventListener);

            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
        }
    };
    usersQuery.addListenerForSingleValueEvent(valueEventListener);

Этот код работал отлично, но когда я переустанавливал его снова, он не работал в соответствии с моими потребностями. Мне действительно нужно было отображать определенный курс для каждого пользователя, на которого он зарегистрирован.Но здесь только курс для "АНАНД" отображается.Как я могу исправить эту проблему?

My Database

1 Ответ

0 голосов
/ 08 декабря 2018

Учитывая, что вы начинаете с Query usersQuery = rootRef.child("Users").orderByChild("name").equalTo("ANAND");, имеет смысл, что отображается только курс для ANAND.

Чтобы показать то же самое для всех пользователей, снимите свое условие:

Query usersQuery = rootRef.child("Users");

Если остальная часть вашего кода уже работает, он будет продолжать работать с этим изменением.

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