public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoHolder> {
private List<VideoPojo> listvideo;
private VideoPojo videoPojo;
private Context mContext;
private boolean readyForLoadingYoutubeThumbnail = true;
String KEY = "AIzaSyA5kyaLgS7MKxS19uHf2CUsIOmDkv92DGU";
public VideoAdapter(Context context, List<VideoPojo> listvideo) {
this.listvideo = listvideo;
this.mContext = context;
videoPojo = new VideoPojo();
}
@Override
public VideoAdapter.VideoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_layout, parent, false);
return new VideoHolder(view);
}
@Override
public void onBindViewHolder(final VideoAdapter.VideoHolder holder, final int position) {
holder.murl.setText(listvideo.get(position).getVideoUrl());
final String url = listvideo.get(position).getVideoUrl();
Log.d(TAG, "readyForLoadingYoutubeThumbnail" + readyForLoadingYoutubeThumbnail);
if (readyForLoadingYoutubeThumbnail) {
Log.d(TAG, "initializing for youtube thumbnail view...");
readyForLoadingYoutubeThumbnail = false;
holder.youTubeThumbnailView.initialize(KEY, new YouTubeThumbnailView.OnInitializedListener() {
@Override
public void onInitializationSuccess(final YouTubeThumbnailView youTubeThumbnailView, final YouTubeThumbnailLoader youTubeThumbnailLoader) {
youTubeThumbnailLoader.setVideo(url);
youTubeThumbnailLoader.setOnThumbnailLoadedListener(new YouTubeThumbnailLoader.OnThumbnailLoadedListener() {
@Override
public void onThumbnailLoaded(YouTubeThumbnailView childYouTubeThumbnailView, String s) {
holder.loding.setVisibility(View.GONE);
youTubeThumbnailLoader.release(); // spy ga memory lick
}
@Override
public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {
youTubeThumbnailLoader.release(); // spy ga memory lick
}
});
readyForLoadingYoutubeThumbnail = true;
}
@Override
public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
//do nohing.. ada error, tambahin method ini jalan, error-nya lupa...
readyForLoadingYoutubeThumbnail = true;
}
});
}
holder.mdelate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
deleteVideoAlertDialog(listvideo.get(holder.getAdapterPosition()).getId(), holder.getAdapterPosition());
}
});
}
@Override
public int getItemCount() {
// Log.v(VideoAdapter.class.getSimpleName(), "" + listvideo.size());
return listvideo.size();
}
public class VideoHolder extends RecyclerView.ViewHolder {
YouTubeThumbnailView youTubeThumbnailView;
protected FrameLayout playButton;
TextView murl, mdelate;
ImageView loding;
public VideoHolder(View itemView) {
super(itemView);
mdelate = itemView.findViewById(R.id.mdelate);
murl = itemView.findViewById(R.id.murl);
playButton = itemView.findViewById(R.id.btnYoutube_player);
youTubeThumbnailView = itemView.findViewById(R.id.youtube_thumbnail);
loding = itemView.findViewById(R.id.loding);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
String url = listvideo.get(position).getVideoUrl();
Toast.makeText(mContext, url, Toast.LENGTH_SHORT).show();
Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) mContext,
KEY, url, 100, false, true);
mContext.startActivity(intent);
}
});
}
}
private void deleteVideoAlertDialog(final int row_id, final int adapterPosition) {
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
// Setting Dialog Title
alertDialog.setTitle("Delete");
// Setting Dialog Message
alertDialog.setMessage("Are you sure you want to delete this video");
alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (SQLiteHelper.deleteUser(mContext, row_id)) {
listvideo.remove(adapterPosition);
notifyItemRemoved(adapterPosition);
notifyItemRangeChanged(adapterPosition, listvideo.size());
} else {
Toast.makeText(mContext, "internal issue ", Toast.LENGTH_SHORT).show();
}
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to invoke NO event
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
public boolean addNewVideo(String Url, Context context) {
videoPojo.setVideoUrl(Url);
SQLiteHelper sqLiteHelper = new SQLiteHelper(context);
if (sqLiteHelper.addNewVideo(context, videoPojo)) {
listvideo.add(videoPojo);
notifyDataSetChanged();
Toast.makeText(context, "video Saved", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}