0
問題が発生しました。私は予算アプリケーションを構築しているので、私は 'Year'と 'Month'という2つのクラスを作成しましたコンストラクタ内でデータベースに保存する
Yearの私のコンストラクタが呼び出されたとき、私はMonthオブジェクトを12個作成してSQLiteデータベースに追加します。
データベースクラスのインスタンスをコンストラクタのパラメータとして設定しました。
年クラス:
public class Year implements Serializable {
private int id;
private int year;
private Month[] months;
private List<Category> categories;
public Year(int year, MyDBHandler mdb) {
this.id = mdb.getYearID();
this.year = year;
for(int i = 0; i > 12; i ++){
Month mon = new Month(mdb.getMonthID(), i, this);
mdb.addMonth(mon);
months[i] = mon;
}
mdb.close();
}
}
月クラス:
public class Month implements Serializable{
private int id;
private String name;
private int number;
private Year year;
private List<Entry> entries;
private List<Category> categories;
public Month(int id, int nr, Year year) {
this.id = id;
String [] months = {"January", "February", "March", "April", "May", "June", "July", "August", "Septemper", "October", "November", "December"};
this.name = months[nr];
this.number = nr;
this.year = year;
categories = year.getCategories();
}
}
私DbHandlerクラスからの関連するメソッド
public void addMonth(Month month){
ContentValues values = new ContentValues();
values.put(COLUMN_MONTH_ID, month.getId());
values.put(COLUMN_MONTH_NUMBER, month.getNumber());
values.put(COLUMN_MONTH_YEAR_ID, month.getYear().getId());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_MONTH, null, values);
}
public ArrayList<Month> getMonths() {
ArrayList<Month> list = new ArrayList<Month>();
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_MONTH + " WHERE 1";
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex(COLUMN_MONTH_NUMBER)) != null) {
int x1 = c.getInt(c.getColumnIndex("_id"));
int x2 = c.getInt(c.getColumnIndex("nr"));
Month month = new Month(x1, x2, null);
list.add(month);
c.moveToNext();
}
}
c.close();
db.close();
return list;
}
問題は、このコメントのために、より適しているだろうが、私は担当者を持っていないので、私は、データベースへの年を作成呼び出すことができるにもかかわらず、私のデータベースは何ヶ
する必要があります... – Rassamdul