我试图列出文件夹中的所有图片和视频,但在recyclerview和gridview中设置它会产生良好的效果。它卡在卷轴上。请建议如何以更好的方式显示所有文件。
这是我获取文件的方式,
listFile = AllUtils.getFiles(fetchPath, mContext);
在recyclerview中显示部分
public void onBindViewHolder(@NonNull DetailViewHolder holder, final int position) {
if (listFile.get(position).toString().contains("mp4")) {
Bitmap myBitmap = ThumbnailUtils.createVideoThumbnail(listFile.get(position).toString(), MediaStore.Video.Thumbnails.MINI_KIND);
holder.ivIcon.setImageBitmap(myBitmap);
holder.ivPlay.setVisibility(View.VISIBLE);
}
}
答案 0 :(得分:2)
GitHub上有各种免费的开源库可用于处理图像和视频。
我认为使用BitMap
来显示图片不是一个好主意,而是BitMap
您应该使用Glide
库来显示图片并使用fenster
来制作视频。
在项目中导入Glide
repositories {
mavenCentral()
google()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}
像这样显示图片:
GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
您还可以使用网址
上传图片 GlideApp.with(this).load("http://........").into(imageView);
答案 1 :(得分:1)
当我在recylerview中显示列表中的图像时,我遇到了同样的问题。由于recylerview缓存并重新生成内部视图,因此在recylerview中获取位置可能会因listfile中的索引而失败。通过将recylerview的高速缓存大小增加到listfile中的项目数,可以确保recylerview中的位置是listfile中的确切位置。 在设置适配器之前,将这行代码添加到recylerview。
// Let's say you have 30 items in your listfile
// Or if you cannot make sure the number of items give a bigger number
recyclerView.setItemViewCacheSize(30);
希望它有所帮助。