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:
Your problem will be solved.
Use this code in your adapter
:
@Override
publicintgetItemCount() {
return data.size();
}
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"