TabLayout с firestore

#java #android #google-cloud-firestore #android-tablayout

#java #Android #firebase #google-облако-firestore #вкладки

Вопрос:

можем ли мы реализовать макет вкладки по щелчку, чтобы при нажатии на любую вкладку он обновлял адаптер firestore recycler новыми данными? Я пробовал это

           day_picker.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            switch (tab.getPosition()) {
                case 0:
                    current_day = "secondSunday";
                    fetch("secondSunday");
                    break;
                case 1:
                    fetch("secondMonday");
                    break;
                case 2:
                    fetch("secondTuesday");
                    break;
                case 3:
                    //TODO
                    break;
                case 4:
                    //TODO
                    break;
            
            }
        }

        
    });
  

метод выборки

     public void fetch(String CO) {

    firebaseFirestore = FirebaseFirestore.getInstance();
    Query query = firebaseFirestore
            .collection("lecture_table")
            .document("second") //change it to computer engineering collection for make it works for other universities
            .collection(CO).orderBy("priorty", Query.Direction.ASCENDING);
    FirestoreRecyclerOptions<lectures_table> options = new FirestoreRecyclerOptions.Builder<lectures_table>()
            .setQuery(query, lectures_table.class)
            .build();

    lectureAdapter = new FirestoreRecyclerAdapter<lectures_table, MyLectureViewHolder>(options) {
        @NonNull
        @Override
        public MyLectureViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater
                    .from(parent.getContext()).inflate(R.layout.lecture_table, parent, false);
            return new MyLectureViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull MyLectureViewHolder holder, int position
                , @NonNull lectures_table model) {
            holder.lectureName.setText(model.getLecture_name());
            holder.time.setText(model.getTime());
            holder.class_code.setText(model.getClass_code());
            holder.class_code.setOnClickListener(v -> copythis(holder.class_code));
        }
    };


}
  

Я хочу, чтобы всякий раз, когда я нажимаю на вкладку, в представлении recycle будут отображаться новые данные

моя база данных выглядит следующим образом

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Спасибо.

Комментарии:

1. Привет. не могли бы вы, пожалуйста, немного конкретнее, чего вы хотите? и с какими ошибками вы сталкиваетесь?

2. когда я нажимаю на вкладку, ничего не меняется, я пытался отправить путь к коллекции в функцию, но это не работает. работает только тогда, когда я отправляю путь к коллекции за пределы прослушивателя кликов TabLayout

3. @AppDev. Хотелось бы, чтобы я был более конкретным

4. Пожалуйста, отредактируйте свой вопрос и добавьте свою структуру базы данных в качестве скриншота. Пожалуйста, ответьте с помощью @AlexMamo

5. Я добрался до метода выборки. Чтобы сузить фокус, не могли бы вы добавить комментарии к методу выборки?