首页 > 解决方案 > 如何将base64的图像从数据库插入到recycleView

问题描述

我正在构建一个获取 API 信息的回收视图,它工作正常,但直到现在我使用了我的可绘制文件夹中的一个图像,但我需要使用我的 API 中的 base64(以字符串形式)图像来更改它。

那么伙计们如何更改我的代码以使回收获取 API 图像。

NewsItem.class

    public class NewsItem {

        String Title,Content,Date,type_col;
        int userPhoto;
        public  NewsItem(){

        }

        public NewsItem(String title, String content, String date, String type_col, int userPhoto) {
            Title = title;
            Content = content;
            Date = date;
            this.type_col = type_col;
            this.userPhoto = userPhoto;
        }

        public String getType_col() {
            return type_col;
        }

        public void setType_col(String type_col) {
            this.type_col = type_col;
        }

        public void setTitle(String title) {
            Title = title;
        }

        public void setContent(String content) {
            Content = content;
        }

        public void setDate(String date) {
            Date = date;
        }

        public void setUserPhoto(int userPhoto) {
            this.userPhoto = userPhoto;
        }

        public String getTitle() {
            return Title;
        }

        public String getContent() {
            return Content;
        }

        public String getDate() {
            return Date;
        }

        public int getUserPhoto() {
            return userPhoto;
        }
    }

新闻适配器:

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.NewsViewHolder> {

    Context mContext;
    List<NewsItem> mData;

    public NewsAdapter(Context mContext, List<NewsItem> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public NewsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View layout = LayoutInflater.from(mContext).inflate(R.layout.item_news,parent,false);

        return new NewsViewHolder(layout);
    }

    @Override
    public void onBindViewHolder(@NonNull NewsViewHolder newsViewHolder, int position) {
        //bind data
        newsViewHolder.tv_title.setText(mData.get(position).getTitle());
        newsViewHolder.tv_description.setText(mData.get(position).getContent());
        newsViewHolder.tv_date.setText(mData.get(position).getDate());
        newsViewHolder.tv_type_col.setText(mData.get(position).getType_col());
        newsViewHolder.img_user.setImageResource(mData.get(position).getUserPhoto());

    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public class NewsViewHolder extends RecyclerView.ViewHolder{

        TextView tv_title,tv_description,tv_date,tv_type_col;
        ImageView img_user;

        public NewsViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_title = itemView.findViewById(R.id.tv_title);
            tv_description = itemView.findViewById(R.id.tv_description);
            tv_date = itemView.findViewById(R.id.tv_date);
            tv_type_col = itemView.findViewById(R.id.tv_type_col);
            img_user = itemView.findViewById(R.id.img_user);
        }
    }
}

主要片段:

RecyclerView NewsRecyclerview;
    NewsAdapter newsAdapter;
    List<NewsItem> mData;


 public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {

NewsRecyclerview = root.findViewById(R.id.news_rv);
        mData = new ArrayList<>();

        getd("all");}

    private void getd(String selector){//, final GalleryFragment.MarkerLoadCallBack markerLoadCallBack
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Api.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create()) //Here we are using the GsonConverterFactory to directly convert json data to object
                .build();

        Api api = retrofit.create(Api.class);

        Call<List<col>> call = api.getHeroes(selector);

        call.enqueue(new Callback<List<col>>() {
            @Override
            public void onResponse(Call<List<col>> call, Response<List<col>> response) {
                // mker = new ArrayList<>();
                List<col> colList = response.body();
                for (col c : colList) {
                    Log.d("image : ", c.getImagePath() + "");

                    mData.add(new NewsItem(c.getNom_col().toString(),"L'email de Client est:" + c.getEmailcol()+"\n" +  "La matricule est :     \n"+ "Créer par "+ c.getCreator() + "\n"  ,"le "+c.getDate_creation_col().toString(),"Type:" + c.getType(),R.drawable.t));
                }
                newsAdapter = new NewsAdapter(getContext(),mData);
                NewsRecyclerview.setAdapter(newsAdapter);
                NewsRecyclerview.setLayoutManager(new LinearLayoutManager(getContext()));

            }

字符串形式的图像是 c.getImagePath()

标签: android

解决方案


Glide 库支持 base 64 格式。因此您可以使用此库通过您的路径绑定您的图像,请参阅下面的链接https://github.com/bumptech/glide了解更多信息


推荐阅读