如何在cardview中设置SD卡中的图像

时间:2016-06-09 08:45:16

标签: android sqlite android-layout android-recyclerview android-cardview

我正在尝试为Android构建一个应用程序。我在回收站视图中有一个安卓卡列表。一个例子:

example

在左侧的标题,专辑和年份附近,我插入了100dp x 100dp的Imageview空间。 Xml的结构是http://pastebin.com/t3spdaTS

所有信息都在应用程序内的sqlite中的简单数据库中。我在/sdcard/my_app_name中保存了一些带有渐进数1.jpg, 2.jpg, ecc...的图像,其中数字是数据库中的行。现在我如何将这些图像放在每张卡片中?我试着在里面写

dbHelper = new DBHelper(getApplicationContext());
Cursor cursor = dbHelper.getDisks();
cursor.moveToFirst();
...
ImageView iv = (Imageview)find
 while(!cursor.isAfterLast()){
        count++;

        String artist = cursor.getString(cursor.getColumnIndex(DBHelper.COL_ARTIST));
        ...
 AlbumCard albumCard = new AlbumCard(0, artist, album, year);
        String path = "sdcard/Warehouse_app/" + count + ".jpg";
        iv.setImageDrawable(Drawable.createFromPath(path));
        list.add(albumCard);

        cursor.moveToNext();
    }

但是iv.setImage给了我一个`null指针异常。我该如何解决这个问题?谢谢大家。

1 个答案:

答案 0 :(得分:0)

NullPointerException意味着Drawable.createFromPath(path)返回null,路径出现问题。

你应该以这种方式获得SD卡路径

    String path = Environment.getExternalStorageDirectory().getAbsolutePath() 
    + File.separator + "Warehouse_app" 
    + File.separator + count + ".jpg";

那么也许你应该检查这个文件是否存在:

    File checkIfFileExists = new File(path);
    if(File.exist()){
         iv.setImageDrawable(Drawable.createFromPath(path));
    }

忘了:你应该在AndroidManifest中添加权限

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />