我正在制作一个在线学习管理系统应用程序。我为“课程”创建了一个表格,该表格中有演讲幻灯片。管理员可以将讲义幻灯片上传到数据库中,用户应该可以通过LessonsActivity下载它们。管理员上传演讲幻灯片时,文件将保存在FirebaseStorage上,文件位置(文件路径)将保存在数据库的Lessons表中。我想让用户进入他们喜欢的任何主题,然后使用我在该活动的布局文件中分配的按钮下载课程(使用保存在数据库中的文件路径。不使用FirebaseStorage参考)。
我观看了一个视频并尝试使用DownloadManager功能,但它仅显示直接从FirebaseStorage下载文件。
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<Lessons> options =
new FirebaseRecyclerOptions.Builder<Lessons>()
.setQuery(LessonsRef.orderByChild("subject_id").equalTo(subject_id), Lessons.class)
.build();
FirebaseRecyclerAdapter<Lessons, LessonsViewHolder> adapter =
new FirebaseRecyclerAdapter<Lessons, LessonsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull LessonsViewHolder holder, int position, @NonNull final Lessons model)
{
holder.lname.setText(model.getName());
downloadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//download();
}
});
}
@NonNull
@Override
public LessonsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.lessons_layout, parent, false);
LessonsViewHolder holder = new LessonsViewHolder(view);
return holder;
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
GridLayoutManager mGridLayoutManager = new GridLayoutManager(LessonsActivity.this, 1);
recyclerView.setLayoutManager(mGridLayoutManager);
}
这是我的Database Structure。
答案 0 :(得分:1)
try {
final File localFile = File.createTempFile("images", "jpg");
storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Bitmap bitmap = BitmapFactory.decodeFile(localFile.getAbsolutePath());
mImageView.setImageBitmap(bitmap);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
}
});
} catch (IOException e ) {}