Skip to content Skip to sidebar Skip to footer

Reyclerview Isn't Working

I'm trying to show list of my model on recyclerview. but for some reason it doesnt show anything. I'm getting my list items from FirebaseDatabase and save all the data on 'videoLis

Solution 1:

You should return the size of your data ArrayList in getItemCount()

Use this:

@Override
publicintgetItemCount() {
    return data.size();
}

Instead of this:

@Override
publicintgetItemCount() {
    return0;
}

Solution 2:

Try this

@Override
  publicintgetItemCount() {
      return data.size();
  }

Solution 3:

Please change your code

getitemcount()
{
   return0:
}

to 

videosList.size();



publicclassMyPlayListFragmentextendsFragment {
    private FirebaseDatabase refToVideos;
    private FirebaseUser currentUser;
    private ArrayList<Video> videosList;
    private VideoViewAdapter adapter;
    private RecyclerView rvVideos;


publicMyPlayListFragment() {
    // Required empty public constructor
}


@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragmentViewv= inflater.inflate(R.layout.fragment_my_play_list, container, false);
    rvVideos = (RecyclerView)v.findViewById(R.id.rvVideos);

    return v;
}

@OverridepublicvoidonViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    videosList = newArrayList<>();
    refToVideos = FirebaseDatabase.getInstance();
    currentUser = FirebaseAuth.getInstance().getCurrentUser();

    refToVideos.getReference(Params.VIDEOS).addListenerForSingleValueEvent(newValueEventListener() {
        @OverridepublicvoidonDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                videosList.add(snapshot.getValue(Video.class));
            }
        }

        @OverridepublicvoidonCancelled(DatabaseError databaseError) {

        }
    });

    adapter = newVideoViewAdapter(getContext(),videosList);
    rvVideos.setLayoutManager(newLinearLayoutManager(getContext()));
    rvVideos.setAdapter(adapter);

}




publicclassVideoViewAdapterextendsRecyclerView.Adapter<VideoViewHolder>{
  private LayoutInflater inflater;
  private Context context;
  private ArrayList<Video> data;

  publicVideoViewAdapter( Context context, ArrayList<Video> data) {
      this.context = context;
      this.inflater = LayoutInflater.from(context);
      this.data = data;
  }

  @Overridepublic VideoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      Viewv= inflater.inflate(R.layout.video_item,parent,false);
      returnnewVideoViewHolder(v);
  }

  @OverridepublicvoidonBindViewHolder(VideoViewHolder holder, int position) {
      Videovideo= data.get(position);
      holder.tvTitleVideo.setText(video.getVideoName());
      holder.tvLikes.setText(String.valueOf(video.getLikes()));
      holder.tvViews.setText(String.valueOf(video.getViews()));
      Uriuri= Uri.parse(video.getVideoURL());
      holder.videoViewUser.setVideoURI(uri);
      holder.videoViewUser.start();

  }

  @OverridepublicintgetItemCount() {
      return"YourList.size()";
  }
}

publicclassVideoViewHolderextendsRecyclerView.ViewHolder{
    private TextView tvTitleVideo,tvLikes,tvViews;
    private VideoView videoViewUser;

    publicVideoViewHolder(View itemView) {
        super(itemView);
        tvTitleVideo = (TextView) itemView.findViewById(R.id.videoTitle);
        tvLikes = (TextView)itemView.findViewById(R.id.tvLikes);
        tvViews = (TextView)itemView.findViewById(R.id.tvViews);
        videoViewUser = (VideoView)itemView.findViewById(R.id.videoViewUser);

      }
    }

 }

Solution 4:

Solution 5:

You are using below code

 @Override
 publicintgetItemCount() {
  return0;
 }

You are returning zero. This is the reason that nothing is shown. You need to return data list size. in Your case it should be videosList.size()

Post a Comment for "Reyclerview Isn't Working"