android - 如何将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()
解决方案
Glide 库支持 base 64 格式。因此您可以使用此库通过您的路径绑定您的图像,请参阅下面的链接https://github.com/bumptech/glide了解更多信息
推荐阅读
- php - 如何从 laravel 6 中数据库中的数组中删除/更新单个值?
- python - ItemClipsToShape QGraphicsSVGItem
- node.js - 当 worker 中启用节点集成时,如何在 Electron 中注册 Service Worker?
- perl - directory/.pm 曾经是一个约定吗?它为什么存在?
- elasticsearch - 带有 elasticsearch-rest-high-level-client 的 ElasticSearch 代码未部署在嵌入式 Jetty 8 中
- salesforce - 如何将 soql 计数的聚合结果存储在列表中
- php - 从 Laravel 隐藏填充模型
- r - 当我有不规则的时间序列数据时,如何使用 1 小时滚动窗口计算 sd(x)?
- asp.net-core - 本地化默认数据注释
- python - 如何将名称与 Python txt 文件中的密码相关联?