I have developed an application in which there are two posts
I have implemented both by using RecyclerView and Firebase recyclerAdapter but the problem is that I dont know that how to differentiate both views, if I use Video view using Youtube Api it gets attached with image view and also gets copy to all of items in recyclerView, and then there is only one video playing in all items. What I want is that if I want to show an image then the item only gets image and if I want to show video then the reyclerView item only gets video without repetition. Like Instagram. I have searched many forums but did not got any help from them. please help. I am using Firebase as my database and ViewHolders are according to that.
Class file for Image and Video posts:
FirebaseRecyclerAdapter <post, postViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<post, postViewHolder>(
post.class,
R.layout.post_row_recycle_home,
postViewHolder.class,
mDatabaseReference
) {
@Override
protected void populateViewHolder(postViewHolder viewHolder, post model, int position) {
viewHolder.setimage(getApplicationContext(), model.getImage());
viewHolder.setYoutube(model.getYoutube());
}
};
mrecyclerView.setAdapter(firebaseRecyclerAdapter);
Holder:
public static class postViewHolder extends RecyclerViewPager.ViewHolder{
View mView;
public postViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setYoutube(final String youtube){
final YouTubePlayerView youPlay = (YouTubePlayerView) mView.findViewById(R.id.youtuber);
youPlay.initialize("SOME KEY",
new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.cueVideo(youtube);
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider,
YouTubeInitializationResult youTubeInitializationResult) {
}
});
}
public void setimage(final Context ctx, final String image){
final ImageView post_image = (ImageView)mView.findViewById(R.id.post_image);
Picasso.with(ctx).load(image)
.networkPolicy(NetworkPolicy.OFFLINE).into(post_image, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Picasso.with(ctx).load(image).into(post_image);
}
});
}
}
Example screenshot:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With