如何加载数据库数据,并将其存储到数组列表中,并将其显示到ListVIew中

时间:2015-02-16 05:49:01

标签: android orm greendao

所以,我想构建一个应用程序来查看数据库中的一些数据。我已经有了数据库,也已经使一些实体与数据库中的列名具有完全相同的属性名。我还通过从assets文件夹复制将数据库放入数据库目录。

我想要实现的是,我想提取一些数据,并将其放入数组列表中,因此我可以在ListView中以片段形式显示它。

有没有方便的方法来提取一些数据而不查询(比如loadAll()函数)?

目前,我使用游标使用查询保存提取的数据,并使用setName(String name)等set函数逐个分配其属性。

之后,我使用CursorAdapter显示列表。

就像这样

public class FrameCursor extends CursorWrapper{

    /**
     * Creates a cursor wrapper.
     *
     * @param cursor The underlying cursor to wrap.
     */
    public FrameCursor(Cursor cursor) {
        super(cursor);
    }

    public ZFrame getFrame(){
        if(isBeforeFirst() || isAfterLast()){
            return null;
        }

        ZFrame frame = new ZFrame();


        ZFrameDao frameDao = new ZFrameDao();


        int frameEdition = getInt(getColumnIndex(COLUMN_FRAME_EDITION));
        int frameId = getInt(getColumnIndex(COLUMN_FRAME_ID));
        int frameNumber = getInt(getColumnIndex(COLUMN_FRAME_NUMBER));
        int frameType = getInt(getColumnIndex(COLUMN_FRAME_TYPE));
        int frameBookmark = getInt(getColumnIndex(COLUMN_FRAME_BOOKMARK));
        int frameGlyph = getInt(getColumnIndex(COLUMN_FRAME_GLYPH));
        int frameLesson = getInt(getColumnIndex(COLUMN_FRAME_LESSON));
        String frameAllReading = getString(getColumnIndex(COLUMN_FRAME_ALL_READING));
        String frameReadingNumber = getString(getColumnIndex(COLUMN_FRAME_READING_NUMBER));
        String frameReference = getString(getColumnIndex(COLUMN_FRAME_REFERENCE));
        String frameWritingNumber = getString(getColumnIndex(COLUMN_FRAME_WRITING_NUMBER));


        frame.setZEDITION(frameEdition);
        frame.setZFRAME_ID(frameId);
        frame.setZFRAME_NUMBER(frameNumber);
        frame.setZFRAME_TYPE(frameType);
        frame.setZBOOKMARK(frameBookmark);
        frame.setZGLYPH((long)frameGlyph);
        frame.setZLESSON((long)frameLesson);
        frame.setZALL_READING_NUMBER(frameAllReading);
        frame.setZREADING_NUMBER(frameReadingNumber);
        frame.setZREFERENCE(frameReference);
        frame.setZWRITING_NUMBER(frameWritingNumber);



        return frame;
    }
}

为每张桌子做这件事会耗费大量工作。

所以任何人都可以帮助我?

2 个答案:

答案 0 :(得分:0)

为什么不使用CursorLoader?使用CursorLoader来处理游标查询问题,它与CursorAdapter完美配合,这是google的guide

答案 1 :(得分:0)

也许这就是你需要的,a light weight orm api?您可以访问here获取更多信息。