如何在 Android 3.1 及更高版本中实现 Firebase Recycler

基本上,我想做的是使用 a并用我的自定义设计FirebaseRecyclerAdapter填充. 较新版本的代码已更改,因此,我尝试实现它但没有奏效。这是我一年前用来编写的代码,它运行良好并填充了我的:RecyclerViewCardViewRecyclerView


FirebaseRecyclerAdapter<DataClass,DataViewHolder> FBRA= new FirebaseRecyclerAdapter<DataClass, DataViewHolder>(

            DataClass,

            R.layout.myCardView,

            DataViewHolder.class,

            databaseReference

    ) {

        @Override

        protected void populateViewHolder(DataViewHolder viewHolder, DataClass model, int position) {

            viewHolder.setTitle(model.gettitle());

            viewHolder.setDate(model.getDate());

        }

   }; 

  myRecyclerView.setAdapter(FBRA);

现在我们必须使用这样的东西,但问题是这段代码没有填充我的recyclerView(我需要在此处进行哪些更改才能recyclerView使用我的 cardView 填充我的?)


@Override

protected void onStart() {

    super.onStart();


    Query query = FirebaseDatabase.getInstance()

            .getReference()

            .child("Official_Services");


    FirebaseRecyclerOptions<ServiceClass> options = new FirebaseRecyclerOptions.Builder<ServiceClass>()

            .setQuery(query, ServiceClass.class)

            .build();


    FirebaseRecyclerAdapter<ServiceClass, ServiceViewHolder> FBRA = new FirebaseRecyclerAdapter<ServiceClass, ServiceViewHolder>(options) {


        @NonNull

        @Override

        public ServiceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {


            View view = LayoutInflater.from(HomeActivity.this).inflate(R.layout.service_card, parent, false);


            return new ServiceViewHolder(view);


        }


        @Override

        protected void onBindViewHolder(@NonNull ServiceViewHolder holder, int position, @NonNull ServiceClass model) {


            holder.setServiceName(model.getServiceName());


            holder.setServiceCaption(model.getServiceCaption());


        }


    };


    mServiceList.setAdapter(FBRA);


}

这是我的ViewHolder课:


public static class ServiceViewHolder extends RecyclerView.ViewHolder {


    public ServiceViewHolder(View itemView) {


        super(itemView);


        View mView = itemView;


    }



拉莫斯之舞
浏览 61回答 2
2回答

倚天杖

为了能够显示来自 Firebase 实时数据库的数据,您需要开始监听更改,为此您应该在onStart()方法中添加以下代码行:@Overrideprotected void onStart() {&nbsp; &nbsp; super.onStart();&nbsp; &nbsp; FBRA.startListening();}要停止监听更改,您需要在onStop()方法中添加以下代码行,如下所示:@Overrideprotected void onStop() {&nbsp; &nbsp; super.onStop();&nbsp; &nbsp; if(FBRA != null) {&nbsp; &nbsp; &nbsp; &nbsp; FBRA.stopListening();&nbsp; &nbsp; }}请从这篇文章中查看我的答案,我已经解释了为什么应该删除监听器。PS也请不要忘记创建FBRA一个全局变量并FirebaseRecyclerAdapter<ServiceClass, ServiceViewHolder>从对象的声明中删除。

一只萌萌小番薯

这更像是一个建议。如果你想继续使用旧方法来填充你的recyclerview,即“populateViewHolder”方法而不是新的“onBindViewHolder”方法,只需使用它;implementation&nbsp;'com.firebaseui:firebase-ui:1.0.1'而不是升级的 firebase-ui 版本
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java