Search code examples
javaandroidfirebasefirebase-realtime-databasefirebaseui

Android RecyclerView display issue in adapter


This is my code.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_user);
    // getting id
    UserList=findViewById(R.id.ChatUserRecycle);
    toolbar=findViewById(R.id.mainPageBar);

    databaseReference=FirebaseDatabase.getInstance().getReference().child("Student");

    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Users");  //setting action bar title
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    UserList.setHasFixedSize(true);
    UserList.setLayoutManager(new LinearLayoutManager(this));
}

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<ChatUsers> options=
            new FirebaseRecyclerOptions.Builder<ChatUsers>()
                    .setQuery(databaseReference,ChatUsers.class)
                    .setLifecycleOwner(this)
                    .build();

    firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<ChatUsers,UsersViewHolder>(options) {

        @NonNull
        @Override
        public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new UsersViewHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.user_layout, parent, false));

        }
        @Override
        protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull ChatUsers model) {
            holder.setName(model.getName());
        }
    };
    UserList.setAdapter(firebaseRecyclerAdapter);

}
public static class UsersViewHolder extends RecyclerView.ViewHolder{
    View mview;

    public UsersViewHolder(@NonNull View itemView) {
        super(itemView);
        mview=itemView;
    }
    public void setName(String name){
        Toast.makeText(itemView.getContext(),"2",Toast.LENGTH_SHORT).show();
        TextView name1=(TextView)mview.findViewById(R.id.SingleUsername);
        name1.setText(name);
    }
}
}

When I run my code nothing show just empty layout without recycleview and layout which want to I inflate. And after few seconds app.

FirebaseRecyclerAdapter<image_details, BlogViewHolder> adapter = new FirebaseRecyclerAdapter<image_details, BlogViewHolder>(
            image_details.class,
            R.layout.individual_row,

            myRef) {
        @Override
        protected void onBindViewHolder(BlogViewHolder holder, int position, image_details model) {
            holder.setDate(model.getDate());
            holder.setUrl(model.getUrl());
        }

        @Override
        public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return null;
        }
    };

First I use this method but it also not works.


Solution

  • When I run my code nothing show just empty layout

    This is because you're not creating a view for your holder at all. To solve this, please add the following lines of code:

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.individual_row, parent, false);
    return new BlogViewHolder(view);
    

    Inside your onCreateViewHolder() method and remove return null;.