【问题标题】:App crashed when load retrieved value to listView将检索到的值加载到 listView 时应用程序崩溃
【发布时间】:2016-03-19 05:18:09
【问题描述】:

AddClaims 中,我将ListView(带有数据和图像)保存到SQLite 数据库中。

添加声明

 ArrayList<ImageAndText> images=new ArrayList<ImageAndText>();

  btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) { //  button is clicked
                SB.insertStaffBenefit(images, a); // SB is the object of StaffAPI
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);
            }
        });
    }

员工API

 public long insertStaffBenefit(ArrayList<ImageAndText> imageText,long id)
    {
        id1=id;
        database=dbHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        for(ImageAndText i:imageText) {
        String description=i.getDescription();
        Bitmap image=i.getImage();
        byte[]data=getBitmapAsByteArray(image);
        values.put(MydatabaseHelper.Description,description);
        values.put(MyDatabaseHelper.Image, data);
        database.insert(MyDatabaseHelper.TABLE_STAFF_BENEFIT, null, values);
        }
        database.close();
        return 0 ;
    }

public static byte[] getBitmapAsByteArray(Bitmap bitmap)
    {    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
        Log.e("TAG", "Blob size: " + outputStream.size() / 1024 + " KB");
        return outputStream.toByteArray();
    }

我不确定这是否是将图像保存在listView 中的正确方法,但它可以显示Blob 大小。所以我假设图像可以保存。

接下来,我想检索所有图像并加载到 EditStaff

中的ListView

编辑人员

  public void BuildEditStaffList(long id)
    {
        Log.e("S", id+"");
        sqlcon.open();
        Cursor cursor1=sqlcon.readName(id);

        String[] columns=new String[]{
                MydatabaseHelper.image,MyDatabaseHelper.Description};

        int[] to=new int[]
                {
                        R.id.image,R.id.description};

        dataAdapter = new SimpleCursorAdapter(getActivity(), R.layout.retrieve_staff,
                cursor1,
                columns,
                to,
                0);

        listViewEdit.setAdapter(dataAdapter);
    }

员工API

 public Cursor readName(long id)
    {
        Log.e("ID",id+"");
        Cursor c=database.rawQuery(" SELECT _id, Image, Description FROM " + MyDatabaseHelper.TABLE_STAFF_BENEFIT  + "  WHERE Ts_id = ?", new String[]{String.valueOf(id)}, null);

        if (c != null) {
            c.moveToFirst();
        }
        Log.e("ID",id+"");
        return c;
    }

当我尝试将图像和文本检索到 ListView EditStaff 时,应用程序崩溃了。我检查了 logCat,但它只会让我失望

W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41e46c80)

删除EditStaff中的MydatabaseHelper.imageR.id.image后,文字可以显示在listView上。所以我猜应用程序崩溃是因为图片。有什么方法可以检查图片是否正确插入SQLite?谢谢

【问题讨论】:

    标签: android image sqlite listview android-listview


    【解决方案1】:

    您应该将图片保存在本地存储中,并将访问它的路径存储在数据库中。

    请注意 java 方法应该尊重驼峰式语法,以小写开头。

    另外,使用工作线程与 SQLite 数据库交互

    【讨论】:

    • 那么这是保存多张图片的唯一方法吗?不能使用位图?
    • 您的方式应该可行,但不推荐。我认为您的原始请求在 where 子句中有问题。一种 。在 Ts 和 _id 之间缺少。
    • 如果对您有帮助,请将问题标记为已解决
    • 它没有多大帮助。不过,感谢您的建议
    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 2019-01-30
    • 2019-03-11
    • 1970-01-01
    • 2012-11-19
    • 2016-02-11
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多