从 SQLITE 回收器视图获取图像路径错误

Posted

技术标签:

【中文标题】从 SQLITE 回收器视图获取图像路径错误【英文标题】:Get image path from SQLITE recycler view Error 【发布时间】:2020-09-18 04:05:58 【问题描述】:

谁能帮我理解我的错误? 我想要实现的是从 SQLite dB 获取图像路径并插入到回收器视图中。包含所有图像的文件夹将在 res/drawable 中。 在适配器类中,我声明了 Context and is private global,在 onCreateViewHolder 中,我添加了 context = parent.getContext(); 同样在 DBModel 类中,我从位图更改为字符串,在 DB 文件中从 blob 更改为 TEXT。

public void onBindViewHolder(@NonNull DBViewHolder holder, int position) 

    ModelClass objModelClass = objModelClassArrayList.get(position);

    holder.description_sign.setText(objModelClass.getDescription());

    //context = holder.image_sign.getContext();
    //int resAd = getIdentifier(image_path,"drawable",context.getPackageName());
    int i = context.getResources().getIdentifier(objModelClass.getImage(),"drawable",context.getPackageName());
    holder.image_sign.setImageResource(i);



        //holder.image_sign.setImageBitmap(objModelClass.getImage());  <- It works but i don't want that.
    


>  E/androidRuntime: FATAL EXCEPTION: main
>             Process: com.example.dissertation, PID: 5449
>             java.lang.NullPointerException: name is null
>                 at android.content.res.ResourcesImpl.getIdentifier(ResourcesImpl.java:240)
>                 at android.content.res.Resources.getIdentifier(Resources.java:1927)

【问题讨论】:

【参考方案1】:

你能试试这个代码块吗?

String uri = "@drawable/" + objModelClass.getImage();  

int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());

Drawable res = context.getResources().getDrawable(imageResource);
holder.image_sign.setImageDrawable(res);

【讨论】:

我已经尝试过了,但我遇到了一个问题,即找不到 getResources(line 2)。 感谢您的帮助,我找到了解决方案。我用你的技术做了一些小的改动【参考方案2】:
    ModelClass objModelClass = objModelClassArrayList.get(position);

    holder.description_sign.setText(objModelClass.getDescription())
    String uri = "@drawable/" + objModelClass.getImage();
    int imageResource = holder.itemView.getResources().getIdentifier(uri, null, holder.itemView.getContext().getPackageName());
    holder.image_sign.setImageResource(imageResource);

它也应该被声明为 Context 为全局并且在 onCreateViewHolder 中引用它 context = parent.getContext();

【讨论】:

以上是关于从 SQLITE 回收器视图获取图像路径错误的主要内容,如果未能解决你的问题,请参考以下文章

如何根据sqlite数据库中的名称从drawable中获取图像,然后在列表视图中显示

在复选框状态更改时从回收器视图适配器更新 sqlite 数据库

Android:我需要拍照并将其存储在 sqlite 数据库中,然后将其填充到回收站视图中

错误 java.sql.SQLException:从数据库中检索 Blob(图像)时 SQLite JDBC 驱动程序未实现

从回收站视图和 sqlite 中删除一行

在 PHP/SQLite 中获取图像的路径