正在过滤查询Firestore中的数据?

问题描述 投票:0回答:1

所以我做了一个RecyclerView并用Firestore的数据填充了它,一切正常,但是当我尝试过滤某些字段时却没有数据。我正在使用FirebaseUI。因此,例如,当我按字段名称进行过滤时,它工作得很好,就像这样:

CollectionReference ref  = db.collection("exercises");
        Query query = ref.whereEqualTo("name", "SQUAT");

但是另一方面,如果这样做是行不通的:

CollectionReference ref  = db.collection("exercises");
        Query query = ref.whereEqualTo("type", "barbell");

这是我的完整代码:

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;

public class ExerciseFragment extends Fragment {

    private static final String TAG = "TAG";
    private RecyclerView mView;
    FirebaseFirestore db;
    private FirestoreRecyclerAdapter adapter;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_exercise, container, false);

        db = FirebaseFirestore.getInstance();
        mView = view.findViewById(R.id.recycler_view);




        //Query
        CollectionReference ref  = db.collection("exercises");
        Query query = ref.whereEqualTo("name", "SQUAT");


        //RecyclerOptions

        FirestoreRecyclerOptions<Exercises> options = new FirestoreRecyclerOptions.Builder<Exercises>()
                .setQuery(query, Exercises.class)
                .build();


        //Adapter
        adapter = new FirestoreRecyclerAdapter<Exercises, ExerciseViewHolder>(options) {
            @NonNull
            @Override
            public ExerciseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_list_layout, parent, false);
                return new ExerciseViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(@NonNull ExerciseViewHolder holder, int position, @NonNull Exercises model) {




                    String uri = model.getImageurl();
                    Glide.with(holder.itemView.getContext()).load(uri).into(holder.imageView);
                    holder.list_name.setText(model.getName());
                    holder.list_desc.setText(model.getDesc());



            }
        };


        mView.setHasFixedSize(true);
        mView.setLayoutManager(new LinearLayoutManager(getContext()));
        mView.setAdapter(adapter);




        return view;
    }



    private class ExerciseViewHolder extends RecyclerView.ViewHolder {

        private ImageView imageView;
        private TextView list_name;
        private TextView list_desc;

        public ExerciseViewHolder(@NonNull View itemView) {
            super(itemView);

            imageView = itemView.findViewById(R.id.listImage);
            list_name = itemView.findViewById(R.id.listTittle);
            list_desc = itemView.findViewById(R.id.listSubtitle);
        }
    }

    @Override
    public void onStop() {
        super.onStop();
        adapter.stopListening();
    }

    @Override
    public void onStart() {
        super.onStart();
        adapter.startListening();
    }
}

this is my db structure

java android google-cloud-firestore firebaseui
1个回答
0
投票

好吧,没关系,这是一个权限问题。

© www.soinside.com 2019 - 2024. All rights reserved.