я пытаюсь кэшировать изображение, которое я получаю из FireStorage и отображаю в программе повторного просмотра с помощью (Picasso или glide), но это не работает со мной ** ** я хочу кэшировать изображение и использовать его, когда устройство go офлайн
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_main, parent, false);
return new ViewHolder(v);
}
class ViewHolder extends RecyclerView.ViewHolder {
private AppCompatImageView imageViewIv;
private MaterialTextView nameTv;
ViewHolder(@NonNull View itemView) {
super(itemView);
imageViewIv = itemView.findViewById(R.id.iv_cardview);
nameTv = itemView.findViewById(R.id.tv_cardview_name);
}
void bind(StudentModel model) {
nameTv.setText(model.getName());
StorageReference reference = FirebaseStorage.getInstance().getReference().child("student photo/" + model.getName());
reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Glide.with(context).load(uri).fitCenter().centerCrop().into(imageViewIv);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(context, "failed to load images", Toast.LENGTH_SHORT).show();
}
});
}
}
, и это класс фрагмента, содержащий адаптер повторного просмотра, а макет содержит повторное представление
public class StudentFragment extends Fragment {
private StudentInfoFireAdapter adapter;
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_recyclerview, container, false);
RecyclerView recyclerView = root.findViewById(R.id.rv_fragment);
CollectionReference collection = FirebaseFirestore.getInstance().collection("student");
Query query = collection.orderBy("dob", Query.Direction.ASCENDING);
FirestoreRecyclerOptions<StudentModel> options = new FirestoreRecyclerOptions.Builder<StudentModel>()
.setQuery(query, StudentModel.class)
.build();
adapter = new StudentInfoFireAdapter(options, getContext());
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
FloatingActionButton fab = root.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), AddStudent.class);
startActivity(intent);
}
});
return root;
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}