2015-02-16 2 views
0

Итак, я хочу создать приложение для просмотра некоторых данных из базы данных. У меня уже есть база данных, также уже сделаны некоторые сущности, которые имеют точно такое же имя свойства с именами столбцов в базе данных. А также я поместил базу данных в каталог базы данных, скопировав из папки с данными.Как загрузить данные базы данных и сохранить их в списке массивов и показать их в ListVIew

Что я хочу достичь, я хочу вытащить некоторые данные и поместить их в список массивов, чтобы я мог показать его в ListView в фрагменте.

Есть ли удобный способ вытащить некоторые данные без запроса (например, функция loadAll())?

На данный момент я использую курсор для сохранения извлеченных данных с помощью запроса и назначаю его свойства один за другим с помощью функции set, такой как setName (String name).

После этого я показываю список, используя 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; 
    } 
} 

Было бы потреблять много работы для этого для каждой таблицы.

Так кто-нибудь мог мне помочь?

+0

без запроса? –

+0

Я имею в виду, не используя rawquery, например, выберите «столбцы» из таблицы, где ... Но используя подобный построитель запросов или какую-либо другую функцию, которая делает запрос для вас –

ответ

0

Почему бы не использовать CursorLoader? Используйте CursorLoader для обработки проблемы с запросом курсора, и он отлично работает с CursorAdapter. Вот

+0

Да, я мог бы использовать это отлично с помощью raw query или SQLite Helper по умолчанию для функции getReadableDatabase(). query. Но функция greenDAO в основном будет возвращать тип List вместо курсора. Подобно queryDeep, который будет возвращать List вместо курсора. Поэтому я думаю, что это будет сделано с использованием другого адаптера, такого как адаптер массива, или адаптер списка. –

+0

Привязка значений курсора к вашему объекту данных является необходимой фазой. Возможно, вы можете реорганизовать код «разбор курсора», чтобы стать методом класса объекта данных, а просто измените положение кода. – jobcrazy

+0

Хм, я понимаю вашу мысль, поэтому вы говорите, что я должен придерживаться курсора, а не использовать список, возвращенный функцией? Не могли бы вы дать мне пример кода, отредактировав свой ответ? –

0

Возможно, это то, что вам нужно, a light weight orm api? Вы можете пойти here для получения дополнительной информации.

+0

На самом деле, когда я занимаюсь серфингом в Интернете, я обнаружил, что greenDAO является более мощным и более простым в использовании. ORM Lite. В любом случае спасибо за ответ –

Смежные вопросы