0

45 の異なるエントリを持つ SQLite データベースがあり、それぞれに次のものがあります。

public static final String TABLE = "Table";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_HOUR = "hour";
public static final String COLUMN_WEEK = "week";
public static final String COLUMN_DAY = "day";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_DESCRIPTION = "description";
public static final String COLUMN_COLOUR = "colour";
public static final String COLUMN_ROOM = "room";

今、私はすべてを読みたいです。私は次のようにこれを行います:

public Cursor fetchAllSubject(){
    Cursor mCursor = database.query(true, TABLE, new String[] {
            COLUMN_ID, COLUMN_HOUR, COLUMN_WEEK, COLUMN_DAY, COLUMN_NAME, COLUMN_DESCRIPTION, COLUMN_COLOUR, COLUMN_ROOM},null
            , null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

他のクラスでは、すべてを読み取るための次のコードがあります。

dao = new DAO(this);
Cursor subjectList = dao.fetchAllSubject();

今、各エントリにID、時間、週などの配列を持たせたいと思っていますが、その方法がわかりません。私の最初の試みは次のとおりでした:

ArrayList<String> mo1h = new ArrayList<String>();
subjectList.moveToFirst();
while(!subjectList.isAfterLast()) {
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_ID)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_HOUR)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_WEEK)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_DAY)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_NAME)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_DESCRIPTION)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_COLOUR)));
     mo1h.add(subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_ROOM)));     
     subjectList.moveToNext();
}

しかし、すべてが月単位であり、それを分割する方法がわかりません。最善の方法は、それぞれに String[] を用意することです。アイデアはありますか?ありがとう!

4

2 に答える 2

4

Bean クラスで作成してから、1 つのArrayList (Collection クラス)を作成できます。

public class Bean
{
   public Bean();
   String id, hour, week, day, name, description, color, room;
}

Beanのリストを作成する

ArrayList<Bean> mo1h = new ArrayList<Bean>();
subjectList.moveToFirst();
while(!subjectList.isAfterLast()) {
Bean b = new Bean();
   b.id = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_ID));
   b.hour =subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_HOUR));
   ...
   ...
   // all your column
   mo1h.add(b);
}
于 2012-06-05T18:20:04.123 に答える
2

戦略を続行せず、代わりに String[] の ArrayList を使用します。

ArrayList<String[]> mo1h = new ArrayList<String[]>();
subjectList.moveToFirst();
while(!subjectList.isAfterLast()) {
     String[] toUse = new String[8];
     toUse[0] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_ID));
     toUse[1] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_HOUR));
     toUse[2] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_WEEK));
     toUse[3] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_DAY));
     toUse[4] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_NAME));
     toUse[5] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_DESCRIPTION));
     toUse[6] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_COLOUR));
     toUse[7] = subjectList.getString(subjectList.getColumnIndex(dao.COLUMN_ROOM)); 
     mo1h.add(toUse);    
     subjectList.moveToNext();
}
于 2012-06-05T18:23:48.767 に答える