RecyclerView.Adapter
onBindViewHolder
现在看起来像这样:
@Override
public void onBindViewHolder(UserSettingHolder userSettingHolder, int i) {
// .. some code
try {
// TODO: Image loader need
File file = new File(MainActivity.context.getFilesDir(), _id + ".photo");
InputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[(int) file.length()];
int numRead = in.read(buf);
Bitmap bitmap = BitmapFactory.decodeByteArray(buf, 0, numRead);
userSettingHolder.icon.setImageBitmap(bitmap);
} catch (Exception e) {
System.out.print(e);
}
}
我想总是从文件系统中读取文件效率不高,特别是onBindViewHolder
不经常调用的文件系统。您是否建议使用“内存缓存”来存储图像?在iOS NSCache
中提供此功能。 NSCache
有一个优势,如果你的内存不足,它将首先被清除。
Android中的替代技术是什么?
答案 0 :(得分:0)
在这种情况下可以使用很多第三方库。 以下是滑行示例:
Glide.with(context)
.load(filePath)
.setMemoryCache(new LruResourceCache(yourSizeInBytes))
.into(youImageView);