首页 > 解决方案 > 未连接适配器;使用 FirebaseRecyclerAdapter 跳过布局

问题描述

我有一个关于这个 FirebaseRecyclerAdapter 的问题,我已经阅读了很多关于这个问题的文章,但没有一篇能解决我的问题。我已经使用过 FirebaseRecyclerAdapter 很多次,它可以按我的需要工作,但这次它显示没有连接适配器;跳过布局并终止应用程序

提前致谢

模型类

public class ModelClass {
private String Titile, Disc, Image;
public ModelClass(String titile, String disc, String image) {
    Titile = titile;
    Disc = disc;
    Image = image;
}

public ModelClass() {
}

public String getTitile() {
    return Titile;
}

public void setTitile(String titile) {
    Titile = titile;
}

public String getDisc() {
    return Disc;
}

public void setDisc(String disc) {
    Disc = disc;
}

public String getImage() {
    return Image;
}

public void setImage(String image) {
    Image = image;
}

}

主页

public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private FirebaseDatabase database;
private DatabaseReference mRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    database = FirebaseDatabase.getInstance();
    mRef = database.getReference();
    recyclerView = (RecyclerView)findViewById(R.id.MainRecylerView1);
    LinearLayoutManager manager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(manager);
    recyclerView.setHasFixedSize(true);
    RetriveData();


}

@Override
protected void onStart() {
    super.onStart();

}

public void RetriveData(){
    mRef.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()){


                final FirebaseRecyclerAdapter<ModelClass, ViewCalssHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<ModelClass, ViewCalssHolder>
                        (
                                ModelClass.class,
                                R.layout.display_images_and_titile,
                                ViewCalssHolder.class,
                                mRef
                        ) {
                    @Override
                    protected void populateViewHolder(ViewCalssHolder viewHolder, ModelClass model, int position) {
                        viewHolder.setTitile(model.getTitile().toString());
                        viewHolder.setDisc(model.getDisc().toString());


                    }

                };
                recyclerView.setAdapter(firebaseRecyclerAdapter);

          }


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}


public class ViewCalssHolder extends RecyclerView.ViewHolder{
    View mView;

    public ViewCalssHolder(View itemView) {
        super(itemView);
        mView = itemView;
    }

    public void setTitile(String titile) {
        TextView T = itemView.findViewById(R.id.post_title);
        T.setText(titile);
    }
    public void setDisc(String disc) {
        TextView T = itemView.findViewById(R.id.post_desc);
        T.setText(disc);

    }
    public void setImage(String image) {

    }

}

}

标签: androidfirebasefirebase-realtime-databaseandroid-recyclerview

解决方案


在 onStart 和 onStop 方法中添加这些行:

覆盖有趣的 onStop() {

        超级.onStop()

        适配器.stopListening()

    }

    覆盖乐趣 onStart() {

        超级.onStart()

        适配器.startListening()

    }


推荐阅读