【问题标题】:The error is inn the firebaseRecyclerAdapter view adapter section错误出现在 firebaseRecyclerAdapter 视图适配器部分
【发布时间】:2020-06-10 08:22:58
【问题描述】:

错误信息是:不兼容的类型:FirestoreRecyclerOptions 无法转换为 FirebaseRecyclerOptions ---- 代码如下。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_agencies);

        firebaseFirestore= FirebaseFirestore.getInstance();

        //views definition
        agencyFeed = (RecyclerView)findViewById(R.id.agencyRecyclerView);

        //------Requirements for retrieving data and storing it to recycler view---

        //Query ----- for retrieving data from firestore
        Query query = firebaseFirestore.collection("Agencies");

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

        adapter = new FirebaseRecyclerAdapter<AgencyModel, AgencyViewHolder>(options){

            @NonNull
            @Override
            public AgencyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

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


            @Override
            protected void onBindViewHolder(@NonNull AgencyViewHolder holder, int position, @NonNull AgencyModel model) {

                holder.name.setText(model.getName());
                holder.location.setText(model.getLocation());

            }
        };

        agencyFeed.hasFixedSize();
        agencyFeed.setLayoutManager(new GridLayoutManager(this,2));
        agencyFeed.setAdapter(adapter);

    }

    //viewholder class
    public class AgencyViewHolder extends RecyclerView.ViewHolder {


        private TextView name, location;

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

            name= itemView.findViewById(R.id.agency_name); //name of agency
            location= itemView.findViewById(R.id.locationTextView);
        }
    }

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

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

【问题讨论】:

    标签: android firebase android-recyclerview google-cloud-firestore


    【解决方案1】:

    您正在根据您的查询使用 Firestore,因此您必须使用 FirestoreRecyclerAdapter 而不是 FirebaseRecyclerAdapter。因此改变:

    adapter = new FirebaseRecyclerAdapter<AgencyModel, AgencyViewHolder>(options){
    

    进入这个:

    adapter = new FirestoreRecyclerAdapter<AgencyModel, AgencyViewHolder>(options){
    

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 2021-07-21
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      相关资源
      最近更新 更多