2011-07-21 25 views
4

私はAndroid SDKのNotesアプリケーションの例を見ています。私がやりたいことは、ListAdpater/ListViewに渡すだけでCursorAdapterを使って並べ替えるのではなく、自分自身でデータを扱う方法を知りたいのです。特にArrayList形式で使用します。この例では、ノートには基本的にID、タイトル、本文があります。私はSQLiteデータベースをどのように照会し、データを収集し、id、title、bodyのパラメータを持つNoteと呼ぶオブジェクトのオブジェクトインスタンスを生成するために返すカーソルを使うことができるかを知りたい。私は最終的にはこれらのオブジェクトをすべてArrayListに格納して管理したいと考えています。私はCursorをどう扱うか分かりません。これはかなり一般的な質問ですが、私はちょうど正しい方向に私を指す人が必要です。SQLiteデータベースを取得し、オブジェクトの配列に格納する

答えて

1

実際に私はそれを試してみました。だからcursor.getColumnIndex("name_of_column")を使用すると、cursor.getInt(cursor.getColumnIndex("_id"));のようなコマンドで使用される列のインデックスが返されることに気付きました。私がしなければならないのは、forループを使ってリスト全体を調べ、収集された行を繰り返し処理するのにcursor.moveToNext()を使うだけです。私はこの質問を投稿した後、この分を思い付いた。 :)

5

私はあなたの質問を得ることはできませんが、データベースをクエリしてから、カーソルデータをArrayListに追加する必要がありますか?

List<String> pointsList = new ArrayList<String>(); 
    database = openOrCreateDatabase("favorites", SQLiteDatabase.OPEN_READWRITE, null); 
    if(database!=null) 
    { 
     c= database.rawQuery(QUERY, null); 
     c.moveToFirst(); 
     while(c.isAfterLast()==false) 
     { 
      pointsList.add(c.getInt(c.getColumnIndex("id")); // do the same for other columns 
      c.moveToNext(); 
     } 

    } 
    database.close(); 
    c.close(); 
0

これは、インサートのいずれかの例を投稿することができ、

public ArrayList<ArrayList<Object>> getAllRowsAsArrays() 
    { 
     // create an ArrayList that will hold all the data collected from 
     // the database. 
     ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>(); 

     // This is a database call that creates a "cursor" object. 
     // The cursor object store the information collected from the 
     // database and is used to iterate through the data. 
     Cursor cursor; 

     try 
     { 
      // ask the database object to create the cursor. 
      cursor = db.query(
        TABLE_NAME, 
        new String[]{TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO}, 
        null, null, null, null, null 
      ); 

      // move the cursors pointer to position zero. 
      cursor.moveToFirst(); 

      // if there is data after the current cursor position, add it 
      // to the ArrayList. 
      if (!cursor.isAfterLast()) 
      { 
       do 
       { 
        ArrayList<Object> dataList = new ArrayList<Object>(); 

        dataList.add(cursor.getLong(0)); 
        dataList.add(cursor.getString(1)); 
        dataList.add(cursor.getString(2)); 

        dataArrays.add(dataList); 
       } 
       // move the cursor's pointer up one position. 
       while (cursor.moveToNext()); 
      } 
     } 
     catch (SQLException e) 
     { 
      Log.e("DB Error", e.toString()); 
      e.printStackTrace(); 
     } 

     // return the ArrayList that holds the data collected from 
     // the database. 
     return dataArrays; 
    } 
+0

あなたを助けるかもしれません? – delive