Как отображать изображения с помощью FirebaseUI Firestore RecyclerView - PullRequest
0 голосов
/ 20 января 2020

Я хотел бы отобразить изображение в моем представлении переработчика, используя FirebaseUI и Firestore. Пока я могу отображать только текст. Я не смог найти понятного решения в Интернете.

Как видно из кода ниже, я смог связать текст с eventName и eventCity элементами текстового представления. Есть ли способ, возможно, с помощью Picasso, чтобы получить URI изображения из Firebase, используя getDisplay_Image_URI() и связать его с eventDisplay viewview? Я добавил класс POJO, который я использую для упрощения понимания.

ExplorePageAdapter. java

        public class ExplorePageAdapter extends FirestoreRecyclerAdapter<POJO_explore_page_item, ExplorePageAdapter.EventHolder> {
    /**
     * Create a new RecyclerView adapter that listens to a Firestore Query.  See {@link
     * FirestoreRecyclerOptions} for configuration options.
     *
     * @param options
     */
    public ExplorePageAdapter(@NonNull FirestoreRecyclerOptions<POJO_explore_page_item> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull EventHolder eventHolder, int i, @NonNull POJO_explore_page_item pojo_explore_page_item) {
        eventHolder.eventName.setText(pojo_explore_page_item.getName());
        eventHolder.eventCity.setText(pojo_explore_page_item.getCity());
        //eventHolder.eventName.setText(pojo_explore_page_item.getName());
    }

    @NonNull
    @Override
    public EventHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.
                layout.explore_page_item, parent,false
        );
        return new EventHolder(v);
    }

    class EventHolder extends RecyclerView.ViewHolder{
TextView eventName;
TextView eventCity;
ImageView eventDisplay;
//Button bookmark;
        public EventHolder(@NonNull View itemView) {
            super(itemView);
            eventName = itemView.findViewById(R.
            id.exp_event_name);
            eventCity = itemView.findViewById(R.
                    id.exp_event_city);
            eventDisplay = itemView.findViewById(R.
                   id.exp_display_image);
            //bookmark = itemView.findViewById(R.
                //    id.bookmark);
        }
    }
}

POJO_explore_page_item. java

    private String Display_Image_URI;
    private String Event_ID;
    private String capacity;
    private String city;
    private String country;
    private String deadline;
    private String end;
    private String start;
    private String price;
    private String venue;
    private String id;
    private String name;

    public POJO_explore_page_item() {
        //empty constructor needed
    }

    public POJO_explore_page_item(String Display_Image_URI, String Event_ID, String capacity, String city, String country, String deadline, String end, String start, String price, String venue, String id, String name) {
        this.Display_Image_URI = Display_Image_URI;
        this.Event_ID = Event_ID;
        this.capacity = capacity;
        this.city = city;
        this.country = country;
        this.deadline = deadline;
        this.end = end;
        this.start = start;
        this.price = price;
        this.venue = venue;
        this.id = id;
        this.name = name;
    }

    public String getDisplay_Image_URI() {
        return Display_Image_URI;
    }

    public String getEvent_ID() {
        return Event_ID;
    }

    public String getCapacity() {
        return capacity;
    }

    public String getCity() {
        return city;
    }

    public String getCountry() {
        return country;
    }

    public String getDeadline() {
        return deadline;
    }

    public String getEnd() {
        return end;
    }

    public String getStart() {
        return start;
    }

    public String getPrice() {
        return price;
    }

    public String getVenue() {
        return venue;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

Ответы [ 3 ]

1 голос
/ 20 января 2020

вы можете использовать Glide

добавить зависимости

implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

Добавить этот код вместо вашего ImageView

Glide.with(context).load(url).into(imageView);
1 голос
/ 20 января 2020

Реализуйте Picasso в своем проекте:

implementation 'com.squareup.picasso:picasso:2.71828'

, затем в onBindViewHolder убедитесь, что вы указали URL-адрес изображения, а не место хранения изображений Firebase:

Picasso.get().load(pojo_explore_page_item.getDisplay_Image_URI()).into(holder.eventDisplay);
0 голосов
/ 20 января 2020

Вы можете загрузить изображение, используя glide

Glide.with(your_activity_context).load(pojo_explore_page_item.getDisplay_Image_URI()).placeholder(R.mipmap.placeholder).error(R.mipmap.error).into(holder.eventDisplay);
...