【问题标题】:Get image path from SQLITE recycler view Error从 SQLITE 回收器视图获取图像路径错误
【发布时间】: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)

【问题讨论】:

    标签: java android image sqlite android-recyclerview


    【解决方案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();

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多