首页 > 解决方案 > 如何使用 FirebaseUI Firestore RecyclerView 显示图像

问题描述

我想使用 FirebaseUI 和 Firestore 在我的回收站视图中显示图像。到目前为止,我只能显示文本。我一直无法在网上找到可以理解的解决方案。

正如您在下面的代码中看到的,我已经能够将文本绑定到eventName文本eventCity视图元素。有没有办法,也许使用 picasso,使用从 firebase 检索图像 URIgetDisplay_Image_URI()并将其绑定到eventDisplayimageview?为了更容易理解,我添加了我正在使用的 POJO 类。

探索PageAdapter.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;
    }
}

标签: androidfirebaseandroid-recyclerviewfirebaseui

解决方案


在您的项目中实现毕加索:

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

然后在您onBindViewHolder确保您提供的图像 url 不是 firebase 图像存储位置:

Picasso.get().load(pojo_explore_page_item.getDisplay_Image_URI()).into(holder.eventDisplay);

推荐阅读