[英]How to get a video length from a recyclerview adapter in android studio
I have created an app where it displays videos from a phone's storage.我创建了一个应用程序,它可以显示手机存储中的视频。 I want to create a feature where, when a user clicks on one of the videos, a toast pops up if the clicked video's length is longer than 5 minutes or less than 2 minutes.
我想创建一个功能,当用户单击其中一个视频时,如果单击的视频的长度超过 5 分钟或少于 2 分钟,则会弹出一个 toast。 How do I achieve that in a recyclerview adapter.
我如何在 recyclerview 适配器中实现这一点。 Below is my recyclerview adapter.
下面是我的recyclerview 适配器。
The Recyclerview Adapter Recyclerview 适配器
public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.ViewHolder> {
private Context context;
private ArrayList<VideoModel> videoModels;
public VideoAdapter(Context context, ArrayList<VideoModel> videoModels) {
this.context = context;
this.videoModels = videoModels;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.lists_of_videos, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final VideoModel vidModel = videoModels.get(position);
Glide.with(context).load(vidModel.getData()).into(holder.video_thumb);
holder.duration.setText(vidModel.getDuration());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (vidModel.getData() != null){
Intent intent = new Intent(context, SelectedVideoActivity.class);
intent.putExtra("videoURL", vidModel.getId());
context.startActivity(intent);
}else {
Toast.makeText(context, "Invalid video", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public int getItemCount() {
return videoModels.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView video_thumb;
TextView duration;
public ViewHolder(@NonNull View itemView) {
super(itemView);
video_thumb = itemView.findViewById(R.id.video_thumb);
duration = itemView.findViewById(R.id.duration);
}
}
Video Model class视频 Model class
public class VideoModel{
long id;
Uri data;
String duration;
public VideoModel(long id, Uri data, String duration){
this.id = id;
this.data = data;
this.duration = duration;
}
public long getId(){
return id;
}
public void setId(long id){
this.id= id;
}
public Uri getData(){
return data;
}
public void setData(Uri data){
this.data= data;
}
public String getDuration(){
return duration:
}
public void setDuration(String duration){
this.duration=duration;
}
}
To start it off, every 60000 is equal to 1 minute.要启动它,每 60000 等于 1 分钟。 Inside your onClick:
在您的 onClick 内部:
if (vidModel.getDuration() < 120000) { // 120 000 is 2 minutes
Toast.makeText(activity, "less than 2 minutes", Toast.LENGTH_SHORT).show();
} else if (vidModel.getDuration() > 300000) { // 300 000 is 5 minutes
Toast.makeText(activity, "more than 5 minutes", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(activity, "This video is between 2 and 5 minutes.", Toast.LENGTH_SHORT).show();
}
Assuming you save the duration in Milliseconds (msec)假设您以毫秒 (msec) 为单位保存持续时间
1 sec = 1000 msec
1 min = 60 sec
So, 1 min = 60 * 1000 = 60000 msec
Then do it like below inside the list item onClick
callback然后在列表项
onClick
回调中执行如下操作
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (vidModel.getData() != null){
Intent intent = new Intent(context, SelectedVideoActivity.class);
intent.putExtra("videoURL", vidModel.getId());
context.startActivity(intent);
// Checking video duration
final long ONE_MIN = 60000;
final long FIVE_MIN = 5 * ONE_MIN;
final long TWO_MIN = 2 * ONE_MIN;
try {
long videoDuration = Long.parseLong(vidModel.getDuration());
if (videoDuration > FIVE_MIN)
Toast.makeText(this, "The video is longer than 5 min", Toast.LENGTH_SHORT).show();
else if (videoDuration < TWO_MIN)
Toast.makeText(this, "The video is less than 2 min", Toast.LENGTH_SHORT).show();
} catch (NumberFormatException e) {
e.printStackTrace();
}
}else {
Toast.makeText(context, "Invalid video", Toast.LENGTH_SHORT).show();
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.