android - 如何在recyclerview中显示图像?
问题描述
我想在recyclerview中显示来自数组的图像,所以我将数组传递给适配器,但recyclerview没有绑定到适配器,因为我在“onBindViewHolder”中使用了“Log.d”,但日志没有显示消息。我的代码有什么问题吗?其他解决方案?
在片段中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_plan, container, false);
paths[0] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[1] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[2] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[3] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[4] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
adapter = new ImagesBodyAdapter(view.getContext());
LinearLayoutManager layoutManager = new LinearLayoutManager(view.getContext(),LinearLayoutManager.HORIZONTAL, false);
recyclerView = view.findViewById(R.id.recycler);
recyclerView.setLayoutManager(layoutManager);
adapter.addItems(paths);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
适配器类是:
public class ImagesBodyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private String[] PATHS = new String[5];
private Context context;
public ImagesBodyAdapter(Context context){
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.image_body_item,viewGroup,false);
return new ViewHolderItemDetail(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
//ViewHolderItemDetail holder = (ViewHolderItemDetail) viewHolder;
Log.d("adapter","recycler binded!");
for (int counter=0; counter<PATHS.length; counter++)
{
File imageFile = new File(PATHS[i]);
if(imageFile.exists()) {
((ViewHolderItemDetail) viewHolder).imageBody.setImageBitmap(BitmapFactory.decodeFile(imageFile.getAbsolutePath()));
}
}
}
public void addItems(String[] paths){
for (int i=0; i<paths.length;i++){
this.PATHS[i] = paths[i];
notifyItemChanged(i);
// notifyDataSetChanged();
}
}
private class ViewHolderItemDetail extends RecyclerView.ViewHolder{
ImageView imageBody;
ViewHolderItemDetail(View v) {
super(v);
imageBody = v.findViewById(R.id.imageBody);
}
}
谢谢
解决方案
推荐阅读
- flutter - 未处理的异常:类型“Null”不是类型转换中“String”类型的子类型
- odbc - 4D ODBC 驱动程序 - 大量连接处于绑定状态
- python - 如何使用 ptyhon 识别单元格是与 google sheet api 合并的单元格
- azure - Azure 成本分析和发票 - 汇率
- python - 如何将循环中创建的数据添加到数组中?
- intellij-idea - 为什么 IntelliJ 实时模板禁用了“编辑变量”?
- c++ - C++ 联合可以对其包含的数字执行数学运算吗?
- android - 运行 Android 测试时出现此错误“selenium.common.exceptions.TimeoutException”
- php - Laravel 在 eloquent 查询期间使用计算
- java - 调用 init 方法失败;嵌套异常是 java.lang.RuntimeException: Can't start redis server