Java 游标窗口:窗口已满

Java 游标窗口:窗口已满,java,android,listview,android-sqlite,android-camera-intent,Java,Android,Listview,Android Sqlite,Android Camera Intent,我是新来的,几天后,也许我发现我有这个问题,我在一个大的列表视图中有一个非常大的数据 W/CursorWindow:窗口已满:请求分配143289字节,可用空间750700字节,窗口大小2097152字节 E/CursorWindow:无法从包含0行64列的CursorWindow中读取第0行第0列。 W/dalvikvm:threadid=1:线程退出时出现未捕获异常(组=0x420aeda0) 03-03 15:50:00.16216239-16239/id.co.bumisentosa.y

我是新来的,几天后,也许我发现我有这个问题,我在一个大的列表视图中有一个非常大的数据

W/CursorWindow:窗口已满:请求分配143289字节,可用空间750700字节,窗口大小2097152字节

E/CursorWindow:无法从包含0行64列的CursorWindow中读取第0行第0列。

W/dalvikvm:threadid=1:线程退出时出现未捕获异常(组=0x420aeda0)
03-03 15:50:00.16216239-16239/id.co.bumisentosa.yantek E/AndroidRuntime:致命异常:main
java.lang.IllegalStateException:无法从CursorWindow读取第0行、第0列。在从光标访问数据之前,确保光标已正确初始化。

我读过一些同样的问题

我发现我的问题是我的blob(字节)图像不会加载到我的listView中

那个么,我如何解决我的cameraIntent并将其保存到一个特定的文件夹中,然后将其放入数据库并加载到ListView中呢。我真的需要你的帮助和举例。多谢各位

我用的是这样的

 public void openCamera(int resultCode) {
    Inspection_JTR_Fragment_Foto_Tab.gallery = false;

    File image = new File(appFolderCheckandCreate(resultCode), "img" + getTimeStamp()
            + ".jpg");
    Uri uriSavedImage = Uri.fromFile(image);
    id.co.bumisentosa.yantek.fragment_JTM.Inspection_JTM_Fragment_Foto_Tab.cameraImagePath = image.getAbsolutePath();
    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
    i.putExtra("return-data", true);
    startActivityForResult(i, resultCode);
}





private String appFolderCheckandCreate(int resultCode) {

    String appFolderPath = "";
    File externalStorage = Environment.getExternalStorageDirectory();

    switch (resultCode) {
        case 1:
            if (externalStorage.canWrite()) {
                appFolderPath = externalStorage.getAbsolutePath() + "/yantek-babel-android/jtr/Keseluruhan Tiang";
                File dir = new File(appFolderPath);

                if (!dir.exists()) {
                    dir.mkdirs();
                }

            } else {

            }
            break;

    }
    return appFolderPath;
}
并将其保存到数据库中

public boolean onOptionsItemSelected(MenuItem item) {
    final int id = item.getItemId();
    if (id == R.id.action_upload) {
        // Upload data ke server

       imageArray = Inspection_JTM_Fragment_Foto_Tab.getimageArray();
        imageArray_2 = Inspection_JTM_Fragment_Foto_Tab.getimageArray_2();


        databaseHandler.saveTest(new ItemsDetails(


                imageArray,
                imageArray_2
                ));

    }
    return super.onOptionsItemSelected(item);

}
我的数据库

 public String saveTest(ItemsDetails details) {

    try {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        //  cv.put(KEY_ID, post.getId());
        //  cv.put(KEY_ID, "null");

        cv.put(COL_LOCATION_ID, details.getunitID());
        cv.put(COL_SECTION_ID, details.getjaringanID());
        cv.put(COL_INSPECTION_DATE, details.gettanggalInspeksi());
        cv.put(COL_INSPECTION_TYPE_ID, details.gettipeInspeksiID());

        cv.put(COL_PHOTO_ENTIRE_PATH, details.getimageArray());
        cv.put(COL_PHOTO_ISOLATOR_PATH, details.getimageArray_2());

        cv.put(COL_POLE_NO, details.getnoTiang());
        cv.put(COL_POLE_IRON, details.gettiangBesi());
        cv.put(COL_POLE_CONCRETE, details.gettiangBeton());
        cv.put(COL_POLE_WOOD, details.gettiangKayu());

        cv.put(COL_POLE_CONDITION_BROKEN, details.getkondisiTiangRetak());
        cv.put(COL_POLE_CONDITION_TILT, details.getkondisiTiangMiring());
        cv.put(COL_POLE_CONDITION_SHIFT, details.getkondisiTiangPindah());

        cv.put(COL_CROSS_ARM_TWIST, details.getcrossArmMelintir());
        cv.put(COL_CROSS_ARM_RUST, details.getcrossArmKarat());
        cv.put(COL_CROSS_ARM_TILT, details.getcrossArmMiring());

        cv.put(COL_ARM_TIE_REPAIR, details.getarmTiePerbaiki());
        cv.put(COL_ARM_TIE_RUST, details.getarmTieKarat());
        cv.put(COL_ARM_TIE_BRACE, details.getarmTiePasang());

        cv.put(COL_ISOLATOR_FULCRUM_R_LEAK, details.getisolatorTumpuRGompel());
        cv.put(COL_ISOLATOR_FULCRUM_R_BROKEN, details.getisolatorTumpuRPecah());
        cv.put(COL_ISOLATOR_FULCRUM_S_LEAK, details.getisolatorTumpuSGompel());
        cv.put(COL_ISOLATOR_FULCRUM_S_BROKEN, details.getisolatorTumpuSPecah());
        cv.put(COL_ISOLATOR_FULCRUM_T_LEAK, details.getisolatorTumpuTGompel());
        cv.put(COL_ISOLATOR_FULCRUM_T_BROKEN, details.getisolatorTumpuTPecah());

        cv.put(COL_ISOLATOR_PULL_R_LEAK, details.getisolatorTarikRGompel());
        cv.put(COL_ISOLATOR_PULL_R_BROKEN, details.getisolatorTarikRPecah());
        cv.put(COL_ISOLATOR_PULL_S_LEAK, details.getisolatorTarikSGompel());
        cv.put(COL_ISOLATOR_PULL_S_BROKEN, details.getisolatorTarikSPecah());
        cv.put(COL_ISOLATOR_PULL_T_LEAK, details.getisolatorTarikTGompel());
        cv.put(COL_ISOLATOR_PULL_T_BROKEN, details.getisolatorTarikTPecah());

        cv.put(COL_ARRESTER_R_BROKEN, details.getarresterRusakR());
        cv.put(COL_ARRESTER_S_BROKEN, details.getarresterRusakS());
        cv.put(COL_ARRESTER_T_BROKEN, details.getarresterRusakT());

        cv.put(COL_CONDUCTOR_R_BUYER, details.getkonduktorRBuyer());
        cv.put(COL_CONDUCTOR_R_LOOSE, details.getkonduktorRKendor());
        cv.put(COL_CONDUCTOR_S_BUYER, details.getkonduktorSBuyer());
        cv.put(COL_CONDUCTOR_S_LOOSE, details.getkonduktorSKendor());
        cv.put(COL_CONDUCTOR_T_BUYER, details.getkonduktorTBuyer());
        cv.put(COL_CONDUCTOR_T_LOOSE, details.getkonduktorTKendor());

        cv.put(COL_CONNECTOR_PG_R_35MM, details.getkonektorPGR35mm());
        cv.put(COL_CONNECTOR_PG_R_70MM, details.getkonektorPGR70mm());
        cv.put(COL_CONNECTOR_PG_R_150MM, details.getkonektorPGR150mm());

        cv.put(COL_CONNECTOR_PG_S_35MM, details.getkonektorPGS35mm());
        cv.put(COL_CONNECTOR_PG_S_70MM, details.getkonektorPGS70mm());
        cv.put(COL_CONNECTOR_PG_S_150MM, details.getkonektorPGS150mm());

        cv.put(COL_CONNECTOR_PG_T_35MM, details.getkonektorPGT35mm());
        cv.put(COL_CONNECTOR_PG_T_70MM, details.getkonektorPGT70mm());
        cv.put(COL_CONNECTOR_PG_T_150MM, details.getkonektorPGT150mm());

        cv.put(COL_BENDING_WIRE_R, details.getbendingWireR());
        cv.put(COL_BENDING_WIRE_S, details.getbendingWireS());
        cv.put(COL_BENDING_WIRE_T, details.getbendingWireT());

        cv.put(COL_ULTRASONIC_R, details.getultrasonicR());
        cv.put(COL_ULTRASONIC_S, details.getultrasonicS());
        cv.put(COL_ULTRASONIC_T, details.getultrasonicT());

        cv.put(COL_GSW_EXIST, details.getgswAda());
        cv.put(COL_GSW_NOT_EXIST, details.getgswTidakAda());

        cv.put(COL_TREE_EXIST, details.getpohonAda());
        cv.put(COL_TREE_NOT_EXIST, details.getpohonTidakAda());

        cv.put(COL_LONGITUDE, details.getlongitude());
        cv.put(COL_LATITUDE, details.getlatitude());

        cv.put(COL_SUGGESTION, details.getSaran());
        cv.put(COL_DESCR, details.getketerangan());


        db.insert(INSPECTIONS_MV_TABLE_NAME, null, cv);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    return getNewTestID();

}                                
那么,我如何解决我的cameraIntent并将其保存到特定文件夹 然后将其放入数据库并加载到ListView中。我真的需要你的帮助 帮助和举例说明

简言之,你不能。虽然可以将图像存储在数据库中,但无法从数据库中检索图像,因为图像太大,无法放入限制为2MB(2097152)的游标窗口中

图像本身约为143289字节,但CursorWindow只有750700字节。因此,由于143289大于750700图像(blob),因此无法提取

如果您:-

save it to a specific folder, then
save the path (or part of the path) in the database rather than the image, and then
extract the path and then get the image via the path when loading the ListView.