为什么我不能将音频文件的持续时间格式化为 textView?
Why can't I format the duration of the audio file into a textView?
我正在尝试格式化歌曲的持续时间,因为我收到的是以毫秒为单位的,但我尝试的方法不起作用。
我试过用这种方式,注释行(//)是我收到时长,但以毫秒为单位。
此 song_duration 是来自模型 class 的字符串变量,song_time 是 xml 文件中 textView 的 ID。
在String.toLong()
中,我得到了图像上的错误
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.song_title.text = songList[position].song_title
holder.song_artist.text = songList[position].artist
// holder.song_time.text = songList[position].song_duration
holder.song_time.text = songList[position].song_duration.format(
"%d:%02d",
TimeUnit.MILLISECONDS.toMinutes(String.toLong()),
TimeUnit.MILLISECONDS.toSeconds(String.toLong())-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(String.toLong()))
)
var bitmap : Bitmap? = null
try {
bitmap =
MediaStore.Images.Media.getBitmap(context.contentResolver, songList[position].image)
holder.song_image.setImageBitmap(bitmap)
}catch (e: Exception){
}
holder.itemView.setOnClickListener{
currentSong = position
onSongSelect.onSelect(songList[position])
}
}
您将无效参数传递给 TimeUnit.MILLISECONDS.toMinutes。要从 Millis 获取格式化时间,您可以使用下面的代码
在您的 onBindViewHolder 中更改为
holder.song_time.text = songList[position].song_duration.format(
"%d:%02d",
TimeUnit.MILLISECONDS.toMinutes(String.toLong()),
TimeUnit.MILLISECONDS.toSeconds(String.toLong())-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(String.toLong()))
)
至
holder.song_time.text = getformattedTime(songList[position].song_duration.toLong())
然后为您添加格式化时间的功能
public String getformattedTime(long seconds) {
long sec = seconds % 60;
long min = (seconds / 60) % 60;
long hr = (seconds / (60 * 60)) % 24;
return String.format("%d:%02d:%02d", hr, min, sec);
}
我正在尝试格式化歌曲的持续时间,因为我收到的是以毫秒为单位的,但我尝试的方法不起作用。
我试过用这种方式,注释行(//)是我收到时长,但以毫秒为单位。
此 song_duration 是来自模型 class 的字符串变量,song_time 是 xml 文件中 textView 的 ID。
在String.toLong()
中,我得到了图像上的错误
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.song_title.text = songList[position].song_title
holder.song_artist.text = songList[position].artist
// holder.song_time.text = songList[position].song_duration
holder.song_time.text = songList[position].song_duration.format(
"%d:%02d",
TimeUnit.MILLISECONDS.toMinutes(String.toLong()),
TimeUnit.MILLISECONDS.toSeconds(String.toLong())-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(String.toLong()))
)
var bitmap : Bitmap? = null
try {
bitmap =
MediaStore.Images.Media.getBitmap(context.contentResolver, songList[position].image)
holder.song_image.setImageBitmap(bitmap)
}catch (e: Exception){
}
holder.itemView.setOnClickListener{
currentSong = position
onSongSelect.onSelect(songList[position])
}
}
您将无效参数传递给 TimeUnit.MILLISECONDS.toMinutes。要从 Millis 获取格式化时间,您可以使用下面的代码
在您的 onBindViewHolder 中更改为
holder.song_time.text = songList[position].song_duration.format(
"%d:%02d",
TimeUnit.MILLISECONDS.toMinutes(String.toLong()),
TimeUnit.MILLISECONDS.toSeconds(String.toLong())-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(String.toLong()))
)
至
holder.song_time.text = getformattedTime(songList[position].song_duration.toLong())
然后为您添加格式化时间的功能
public String getformattedTime(long seconds) {
long sec = seconds % 60;
long min = (seconds / 60) % 60;
long hr = (seconds / (60 * 60)) % 24;
return String.format("%d:%02d:%02d", hr, min, sec);
}