0

I am following a youtube video in which I was trying to retrieve data using FirebaseUI but I am not able to show any data in the recyclerview.

Here is the code

public class MemeFragment extends Fragment {
    RecyclerView recyclerView;
    FirebaseDatabase firebaseDatabase;
    DatabaseReference myref;
    FirebaseRecyclerAdapter<Datafileinfo, ShowDataViewHolder> firebaseRecyclerAdapter;
    FirebaseRecyclerOptions<Datafileinfo> options;

    public MemeFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_meme, container, false);
        firebaseDatabase = FirebaseDatabase.getInstance();
        myref = FirebaseDatabase.getInstance().getReference("memes");
        recyclerView = (RecyclerView) view.findViewById(R.id.recyc);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        options = new FirebaseRecyclerOptions.Builder<Datafileinfo>()
                        .setQuery(myref, Datafileinfo.class)
                        .build();
        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
        firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Datafileinfo, ShowDataViewHolder>
                (options) {
            @Override
            protected void onBindViewHolder(@NonNull ShowDataViewHolder holder, int position, @NonNull Datafileinfo model) {
                holder.ImageTitle(model.getTitle());
                holder.ImageUrl(model.getImage());
            }

            @Override
            public ShowDataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custo, parent, false);
                return new ShowDataViewHolder(view);
            }
        };
        recyclerView.setAdapter(firebaseRecyclerAdapter);
    }

    public static class ShowDataViewHolder extends RecyclerView.ViewHolder {
        private ImageView imageView;
        private TextView textView;

        public ShowDataViewHolder(View itemView) {
            super(itemView);
            imageView = (ImageView) itemView.findViewById(R.id.imageView);
            textView = (TextView) itemView.findViewById(R.id.textView);
        }

        private void ImageTitle(String title) {
            textView.setText(title);
        }

        private void ImageUrl(String url) {
            Glide.with(itemView.getContext()).
                    load(url).
                    into(imageView);
        }
    }
}

and datafileinfo is the getter and setter class I have also taken the internet permission.Note I am able to get the single value from firebase but for multiple values, I am facing a problem this is the database. where I am doing wrong any idea??

Note I have followed and gone through all the tutorials and similar post. database

Komal12
  • 3,340
  • 4
  • 16
  • 25
Neelay Srivastava
  • 1,041
  • 3
  • 15
  • 46

1 Answers1

0

Create a separate Class for your ViewHolder

    public class ShowDataViewHolder extends RecyclerView.ViewHolder{

    private ImageView imageView;
    private TextView textView;

    public ShowDataViewHolder (View itemView) {
        super(itemView);
        imageView = (ImageView)itemView.findViewById(R.id.imageView);
        textView = (TextView) itemView.findViewById(R.id.textView);
    }
 }

In your MenuFragment add

    DatabaseReference mDatabaseMemes= //your reference to memes node

    FirebaseRecyclerAdapter<yourModel, ShowDataViewHolder> adapter= new FirebaseRecyclerAdapter<yourModel, ShowDataViewHolder>(yourModel.class, R.layout.yourLayout, 
    ShowDataViewHolder.class,mDatabaseMemes) {
        @Override
        protected void populateViewHolder(ShowDataViewHolder viewHolder, yourModel model, int position) {
            viewHolder.textView.setText(model.getTitle());
            Glide.with(context)
                    .load(model.getImage())
                    .fitCenter()
                    .into(viewHolder.imageView);

        }
    };
    recyclerView.setAdapter(adapter);
}

MAKE SURE your model class has String title and image same as your child names under memes node.

Deepak Kataria
  • 554
  • 3
  • 10