I want to display my firebase database but I want each entry to have an image attached to it. Is it possible to have the variable type “Image” in my Exercise Class? If so how would display it when I run it on my app. I can display all the Strings but when I tried to display the images it would crash.
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { Exercise exercise = list.get(position); holder.exerciseName.setText(exercise.getExerciseName()); holder.muscleGroupName.setText(exercise.getMuscleGroupName()); holder.equipmentName.setText(exercise.getEquipmentName()); holder.imageView.setImageResource(exercise.getImage()); } public class Exercise { String exerciseName, muscleGroupName, equipmentName; Image image; public Image getImage() { return image; } public String getExerciseName() { return exerciseName; } public String getMuscleGroupName() { return muscleGroupName; } public String getEquipmentName() { return equipmentName; } }
Advertisement
Answer
on your build.gradle(Module: app) under dependencies
add this library:
dependencies { //other dependencies //GLide implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' }
re write your class as:
public class Exercise { String exerciseName, muscleGroupName, equipmentName,image; public String getImage() { return image; } public String getExerciseName() { return exerciseName; } public String getMuscleGroupName() { return muscleGroupName; } public String getEquipmentName() { return equipmentName; } }
Use it this way:
Exercise exercise = list.get(position); holder.exerciseName.setText(exercise.getExerciseName()); holder.muscleGroupName.setText(exercise.getMuscleGroupName()); holder.equipmentName.setText(exercise.getEquipmentName()); Glide.with(holder.imageView) .load(exercise.getImage()) .into(holder.imageView);