Java Android:将复选框状态存储在不同日期的检查表中
我的应用程序是一个简单的清单。如果我单击复选框并关闭应用程序,则复选框状态将在重新启动时保存并重新加载 现在我想添加一个日历,可以用来选择日期。对于每个新的一天,列表中复选框的默认状态都应取消选中 如果复选框的状态更改,则应为此特定日期保存复选框。因此,如果我关闭应用程序并再次选择同一天,复选框状态应重新加载 如何保存复选框状态取决于日期和在listview中单击的复选框Java Android:将复选框状态存储在不同日期的检查表中,java,android,listview,checkbox,android-sqlite,Java,Android,Listview,Checkbox,Android Sqlite,我的应用程序是一个简单的清单。如果我单击复选框并关闭应用程序,则复选框状态将在重新启动时保存并重新加载 现在我想添加一个日历,可以用来选择日期。对于每个新的一天,列表中复选框的默认状态都应取消选中 如果复选框的状态更改,则应为此特定日期保存复选框。因此,如果我关闭应用程序并再次选择同一天,复选框状态应重新加载 如何保存复选框状态取决于日期和在listview中单击的复选框 我还可以用SharedReferences这样做吗?或者我应该使用SQLite,因为一年的使用将导致3650个已保存的复选框
我还可以用SharedReferences这样做吗?或者我应该使用SQLite,因为一年的使用将导致3650个已保存的复选框状态(假设我的检查表包含大约10项)。以下是合乎逻辑的答案。。您需要自己实现它。
- 使用SQLite并使表格具有所需的列(根据复选框),同时还带有日期字段
- 现在在日期之后选择查询数据库以获得所需的日期。。如果日期存在数据,则设置复选框
- 一个名为/name\u date的日期列
- 名为\u cb01,\u cb02,…,\u cb10的复选框的10列
- onCreate(创建数据库时运行一次)和
- onUpgrade(如果数据库版本号增加,则运行,注意不执行任何操作)
- 它有一个只需要上下文的构造函数(因此在使用它的活动中
)mDB=newdbhelper(this);
- 它有一种方法可以添加一行
,该方法添加未标记为正在设置复选框的行addNewDayEntry
- 它有一个更新日期复选框(1-10)的方法
- 它有一种方法可以检查是否为指定日期设置了复选框
isDayEntryCheckboxSet
- 有一个私有方法用于检索复选框(1-10)的相应列名,即
getCheckboxColumnNameFromNumber
- 这里有一种方法可以实现SQLite方面的功能
该数据库由一个包含11列的表组成
public class DBHelper extends SQLiteOpenHelper {
public static final String DBNAME = "mydb";
public static final int DBVERSION = 1;
public static final String TB_DAYENTRIES = "day_entries";
public static final String DAYENTRIES_COL_DATE = "_date";
public static final String DAYENTRIES_COL_CB01 = "_cb01";
public static final String DAYENTRIES_COL_CB02 = "_cb02";
public static final String DAYENTRIES_COL_CB03 = "_cb03";
public static final String DAYENTRIES_COL_CB04 = "_cb04";
public static final String DAYENTRIES_COL_CB05 = "_cb05";
public static final String DAYENTRIES_COL_CB06 = "_cb06";
public static final String DAYENTRIES_COL_CB07 = "_cb07";
public static final String DAYENTRIES_COL_CB08 = "_cb08";
public static final String DAYENTRIES_COL_CB09 = "_cb09";
public static final String DAYENTRIES_COL_CB10 = "_cb10";
SQLiteDatabase mDB;
public DBHelper(Context context) {
super(context, DBNAME, null, DBVERSION);
mDB = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
String crt_tbl_sql = "CREATE TABLE IF NOT EXISTS " + TB_DAYENTRIES + "(" +
DAYENTRIES_COL_DATE + " TEXT PRIMARY KEY NOT NULL," +
DAYENTRIES_COL_CB01 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB02 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB03 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB04 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB05 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB06 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB07 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB08 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB09 + " INTEGER DEFAULT 0," +
DAYENTRIES_COL_CB10 + " INTEGER DEFAULT 0" +
")";
db.execSQL(crt_tbl_sql);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
public long addNewDayEntry(String date) {
ContentValues cv = new ContentValues();
cv.put(DAYENTRIES_COL_DATE,date);
return mDB.insert(TB_DAYENTRIES,null,cv);
}
public int setDayEntryForOneCheckBox(String date, int checkbox) {
int rv = 0;
String whereclause = DAYENTRIES_COL_DATE + "=?";
String[] whereargs = new String[]{date};
ContentValues cv = new ContentValues();
switch (checkbox) {
case 1:
cv.put(DAYENTRIES_COL_CB01,1);
break;
case 2:
cv.put(DAYENTRIES_COL_CB02,1);
break;
case 3:
cv.put(DAYENTRIES_COL_CB03,1);
break;
case 4:
cv.put(DAYENTRIES_COL_CB04,1);
break;
case 5:
cv.put(DAYENTRIES_COL_CB05,1);
break;
case 6:
cv.put(DAYENTRIES_COL_CB06,1);
break;
case 7:
cv.put(DAYENTRIES_COL_CB07,1);
break;
case 8:
cv.put(DAYENTRIES_COL_CB08,1);
break;
case 9:
cv.put(DAYENTRIES_COL_CB09,1);
break;
case 10:
cv.put(DAYENTRIES_COL_CB10,1);
break;
}
if (cv.size() == 1) {
rv = mDB.update(TB_DAYENTRIES,cv,whereclause,whereargs);
}
return rv;
}
public boolean isDayEntryCheckboxSet(String date, int checkbox) {
boolean rv = false;
String whereclause = DAYENTRIES_COL_DATE + "=?";
String[] whereargs = new String[]{date};
if (checkbox < 1 || checkbox > 10) {
return rv;
}
Cursor csr = mDB.query(TB_DAYENTRIES,null,whereclause,whereargs,null,null,null);
if (csr.moveToFirst()) {
rv = csr.getInt(csr.getColumnIndex(getCheckboxColumnNameFromNumber(checkbox))) == 1;
}
csr.close();
return rv;
}
private String getCheckboxColumnNameFromNumber(int checkbox) {
switch (checkbox) {
case 1:
return DAYENTRIES_COL_CB01;
case 2:
return DAYENTRIES_COL_CB02;
case 3:
return DAYENTRIES_COL_CB03;
case 4:
return DAYENTRIES_COL_CB04;
case 5:
return DAYENTRIES_COL_CB05;
case 6:
return DAYENTRIES_COL_CB06;
case 7:
return DAYENTRIES_COL_CB07;
case 8:
return DAYENTRIES_COL_CB08;
case 9:
return DAYENTRIES_COL_CB09;
case 10:
return DAYENTRIES_COL_CB10;
}
return "";
}
}
public class MainActivity extends AppCompatActivity {
DBHelper mDB;
String[] checkdates = new String[]{"2018-09-10","2018-09-11","2018-09-09"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDB = new DBHelper(this);
mDB.addNewDayEntry("2018-09-10");
mDB.setDayEntryForOneCheckBox("2018-09-10",1);
mDB.setDayEntryForOneCheckBox("2018-09-10",3);
mDB.setDayEntryForOneCheckBox("2018-09-10",8);
mDB.setDayEntryForOneCheckBox("2010-09-09",7); //<<<<<<<<<< wont set as DAY ENTRY NOT ADDED
StringBuilder sb = new StringBuilder("");
for (String s: checkdates) {
sb.append("\nChecking Date ").append(s);
for(int i=1; i <= 10; i++) {
sb.append("\n\tCHECKBOX ").append(String.valueOf(i)).append(" IS ").append(String.valueOf(mDB.isDayEntryCheckboxSet(s,i)));
}
}
Log.d("CHECKBOX STATES",sb.toString());
}
}
产出为:-
10-01 10:17:46.753 1467-1467/? D/CHECKBOX STATES: Checking Date 2018-09-10
CHECKBOX 1 IS true
CHECKBOX 2 IS false
CHECKBOX 3 IS true
CHECKBOX 4 IS false
CHECKBOX 5 IS false
CHECKBOX 6 IS false
CHECKBOX 7 IS false
CHECKBOX 8 IS true
CHECKBOX 9 IS false
CHECKBOX 10 IS false
Checking Date 2018-09-11
CHECKBOX 1 IS false
CHECKBOX 2 IS false
CHECKBOX 3 IS false
CHECKBOX 4 IS false
CHECKBOX 5 IS false
CHECKBOX 6 IS false
CHECKBOX 7 IS false
CHECKBOX 8 IS false
CHECKBOX 9 IS false
CHECKBOX 10 IS false
Checking Date 2018-09-09
CHECKBOX 1 IS false
CHECKBOX 2 IS false
CHECKBOX 3 IS false
CHECKBOX 4 IS false
CHECKBOX 5 IS false
CHECKBOX 6 IS false
CHECKBOX 7 IS false
CHECKBOX 8 IS false
CHECKBOX 9 IS false
CHECKBOX 10 IS false
- 注释
- 2018-09-10和2018-09-09的所有复选框均为假,因为未添加这些日期(天)的条目
- 行
mDB.setDayEntryForOneCheckBox(“2010-09-09”,7)// 从MikeT的回答继续,下面是如何进行ListView,并在选中复选框时使其更改基础数据 您需要将ListView添加到主布局中,例如:-
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <ListView android:id="@+id/cblist" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </LinearLayout>
- 这是CBTag.java
对DatabaseHelper进行了一些更改,现在是这样的public class CBListAdapter extends CursorAdapter { private Context mContext; private DBHelper mDB; public CBListAdapter(Context context, Cursor cursor) { super(context,cursor,0); mContext = context; mDB = new DBHelper(mContext); } @Override public View getView(int position, View convertView, ViewGroup parent) { return super.getView(position,convertView,parent); } @Override public View newView(Context context, Cursor cursor, ViewGroup viewGroup) { return LayoutInflater.from(mContext).inflate(R.layout.cblist_item,viewGroup,false); } @Override public void bindView(View view, Context context, Cursor csr) { TextView entrydate = view.findViewById(R.id.entrydate); String entry_date = csr.getString(csr.getColumnIndex(DBHelper.DAYENTRIES_COL_DATE)); entrydate.setText(entry_date); CheckBox[] cblist = new CheckBox[]{ view.findViewById(R.id.cb01), view.findViewById(R.id.cb02), view.findViewById(R.id.cb03), view.findViewById(R.id.cb04), view.findViewById(R.id.cb05), view.findViewById(R.id.cb06), view.findViewById(R.id.cb07), view.findViewById(R.id.cb08), view.findViewById(R.id.cb09), view.findViewById(R.id.cb10) }; // For Each CheckBox set the tag as a CBTag object (Holds String for date and int for CheckBox #) // Also add an onClick Listener that will update the applicable row/column and // refresh the ListView int cbidx = 0; for (CheckBox c: cblist) { c.setChecked(csr.getInt(cbidx + 1) == 1); c.setTag(new CBTag(entry_date,cbidx + 1)); c.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CBTag cbtag = (CBTag) view.getTag(); mDB.setDayEntryForOneCheckBox( cbtag.getEntrydate(), cbtag.getCheckBoxNumber(), ((CheckBox)view).isChecked() ); ((MainActivity) mContext).refreshDateEntryList(); } }); cbidx++; } } }
public class DBHelper extends SQLiteOpenHelper { public static final String DBNAME = "mydb"; public static final int DBVERSION = 1; public static final String TB_DAYENTRIES = "day_entries"; public static final String DAYENTRIES_COL_DATE = "_date"; public static final String DAYENTRIES_COL_CB01 = "_cb01"; public static final String DAYENTRIES_COL_CB02 = "_cb02"; public static final String DAYENTRIES_COL_CB03 = "_cb03"; public static final String DAYENTRIES_COL_CB04 = "_cb04"; public static final String DAYENTRIES_COL_CB05 = "_cb05"; public static final String DAYENTRIES_COL_CB06 = "_cb06"; public static final String DAYENTRIES_COL_CB07 = "_cb07"; public static final String DAYENTRIES_COL_CB08 = "_cb08"; public static final String DAYENTRIES_COL_CB09 = "_cb09"; public static final String DAYENTRIES_COL_CB10 = "_cb10"; SQLiteDatabase mDB; public DBHelper(Context context) { super(context, DBNAME, null, DBVERSION); mDB = this.getWritableDatabase(); } @Override public void onCreate(SQLiteDatabase db) { String crt_tbl_sql = "CREATE TABLE IF NOT EXISTS " + TB_DAYENTRIES + "(" + DAYENTRIES_COL_DATE + " TEXT PRIMARY KEY NOT NULL," + DAYENTRIES_COL_CB01 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB02 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB03 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB04 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB05 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB06 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB07 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB08 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB09 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB10 + " INTEGER DEFAULT 0" + ")"; db.execSQL(crt_tbl_sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public long addNewDayEntry(String date) { ContentValues cv = new ContentValues(); cv.put(DAYENTRIES_COL_DATE,date); return mDB.insert(TB_DAYENTRIES,null,cv); } public Cursor getDateEntryListAsCursor() { String[] columns = new String[]{"*,rowid AS _id"}; return mDB.query(TB_DAYENTRIES,columns,null,null,null,null,null); } public int setDayEntryForOneCheckBox(String date, int checkbox, boolean status) { int rv = 0; String whereclause = DAYENTRIES_COL_DATE + "=?"; String[] whereargs = new String[]{date}; ContentValues cv = new ContentValues(); int value = 0; if (status) { value = 1; } switch (checkbox) { case 1: cv.put(DAYENTRIES_COL_CB01,value); break; case 2: cv.put(DAYENTRIES_COL_CB02,value); break; case 3: cv.put(DAYENTRIES_COL_CB03,value); break; case 4: cv.put(DAYENTRIES_COL_CB04,value); break; case 5: cv.put(DAYENTRIES_COL_CB05,value); break; case 6: cv.put(DAYENTRIES_COL_CB06,value); break; case 7: cv.put(DAYENTRIES_COL_CB07,value); break; case 8: cv.put(DAYENTRIES_COL_CB08,value); break; case 9: cv.put(DAYENTRIES_COL_CB09,value); break; case 10: cv.put(DAYENTRIES_COL_CB10,value); break; } if (cv.size() == 1) { rv = mDB.update(TB_DAYENTRIES,cv,whereclause,whereargs); } return rv; } public boolean isDayEntryCheckboxSet(String date, int checkbox) { boolean rv = false; String whereclause = DAYENTRIES_COL_DATE + "=?"; String[] whereargs = new String[]{date}; if (checkbox < 1 || checkbox > 10) { return false; } Cursor csr = mDB.query(TB_DAYENTRIES,null,whereclause,whereargs,null,null,null); if (csr.moveToFirst()) { rv = csr.getInt(csr.getColumnIndex(getCheckboxColumnNameFromNumber(checkbox))) == 1; } csr.close(); return rv; } private String getCheckboxColumnNameFromNumber(int checkbox) { switch (checkbox) { case 1: return DAYENTRIES_COL_CB01; case 2: return DAYENTRIES_COL_CB02; case 3: return DAYENTRIES_COL_CB03; case 4: return DAYENTRIES_COL_CB04; case 5: return DAYENTRIES_COL_CB05; case 6: return DAYENTRIES_COL_CB06; case 7: return DAYENTRIES_COL_CB07; case 8: return DAYENTRIES_COL_CB08; case 9: return DAYENTRIES_COL_CB09; case 10: return DAYENTRIES_COL_CB10; } return ""; } }
- 这将在表中放入3行,并设置一些要检查的行
请添加一个最小的代码示例来说明您的问题。欢迎使用堆栈溢出!其他用户将您的问题标记为低质量和需要改进。我对您的输入进行了重新措辞/格式化,使其更易于阅读/理解。请查看我的更改,以确保它们反映您的意图。但我认为你的问题仍然无法回答。你现在应该回答你的问题,包括你自己的努力(参见)。如果您有进一步的问题或反馈,请随时给我留言。我会尽快添加一些代码示例谢谢:)我会尽快尝试如何取消选中数据库中的复选框?SetDayEntryForOneCheckBox只设置一个选中的复选框,对吗?@JanMeyer正确,不过稍作修改(将指示传递为第三个参数),您只需将列更新为0即可。SQLite没有布尔类型,因此您通常会使用整数0表示false,1表示true(并非您受到限制)。您甚至可以使用1列作为整数来表示所有复选框。如果您查看Uvi答案中的修改,则已相应修改了
。看起来Uvi的修改设置并取消设置复选框和基础数据。SetDayEntryForOneCheckBox
public class CBListAdapter extends CursorAdapter { private Context mContext; private DBHelper mDB; public CBListAdapter(Context context, Cursor cursor) { super(context,cursor,0); mContext = context; mDB = new DBHelper(mContext); } @Override public View getView(int position, View convertView, ViewGroup parent) { return super.getView(position,convertView,parent); } @Override public View newView(Context context, Cursor cursor, ViewGroup viewGroup) { return LayoutInflater.from(mContext).inflate(R.layout.cblist_item,viewGroup,false); } @Override public void bindView(View view, Context context, Cursor csr) { TextView entrydate = view.findViewById(R.id.entrydate); String entry_date = csr.getString(csr.getColumnIndex(DBHelper.DAYENTRIES_COL_DATE)); entrydate.setText(entry_date); CheckBox[] cblist = new CheckBox[]{ view.findViewById(R.id.cb01), view.findViewById(R.id.cb02), view.findViewById(R.id.cb03), view.findViewById(R.id.cb04), view.findViewById(R.id.cb05), view.findViewById(R.id.cb06), view.findViewById(R.id.cb07), view.findViewById(R.id.cb08), view.findViewById(R.id.cb09), view.findViewById(R.id.cb10) }; // For Each CheckBox set the tag as a CBTag object (Holds String for date and int for CheckBox #) // Also add an onClick Listener that will update the applicable row/column and // refresh the ListView int cbidx = 0; for (CheckBox c: cblist) { c.setChecked(csr.getInt(cbidx + 1) == 1); c.setTag(new CBTag(entry_date,cbidx + 1)); c.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CBTag cbtag = (CBTag) view.getTag(); mDB.setDayEntryForOneCheckBox( cbtag.getEntrydate(), cbtag.getCheckBoxNumber(), ((CheckBox)view).isChecked() ); ((MainActivity) mContext).refreshDateEntryList(); } }); cbidx++; } } }
public class DBHelper extends SQLiteOpenHelper { public static final String DBNAME = "mydb"; public static final int DBVERSION = 1; public static final String TB_DAYENTRIES = "day_entries"; public static final String DAYENTRIES_COL_DATE = "_date"; public static final String DAYENTRIES_COL_CB01 = "_cb01"; public static final String DAYENTRIES_COL_CB02 = "_cb02"; public static final String DAYENTRIES_COL_CB03 = "_cb03"; public static final String DAYENTRIES_COL_CB04 = "_cb04"; public static final String DAYENTRIES_COL_CB05 = "_cb05"; public static final String DAYENTRIES_COL_CB06 = "_cb06"; public static final String DAYENTRIES_COL_CB07 = "_cb07"; public static final String DAYENTRIES_COL_CB08 = "_cb08"; public static final String DAYENTRIES_COL_CB09 = "_cb09"; public static final String DAYENTRIES_COL_CB10 = "_cb10"; SQLiteDatabase mDB; public DBHelper(Context context) { super(context, DBNAME, null, DBVERSION); mDB = this.getWritableDatabase(); } @Override public void onCreate(SQLiteDatabase db) { String crt_tbl_sql = "CREATE TABLE IF NOT EXISTS " + TB_DAYENTRIES + "(" + DAYENTRIES_COL_DATE + " TEXT PRIMARY KEY NOT NULL," + DAYENTRIES_COL_CB01 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB02 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB03 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB04 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB05 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB06 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB07 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB08 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB09 + " INTEGER DEFAULT 0," + DAYENTRIES_COL_CB10 + " INTEGER DEFAULT 0" + ")"; db.execSQL(crt_tbl_sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public long addNewDayEntry(String date) { ContentValues cv = new ContentValues(); cv.put(DAYENTRIES_COL_DATE,date); return mDB.insert(TB_DAYENTRIES,null,cv); } public Cursor getDateEntryListAsCursor() { String[] columns = new String[]{"*,rowid AS _id"}; return mDB.query(TB_DAYENTRIES,columns,null,null,null,null,null); } public int setDayEntryForOneCheckBox(String date, int checkbox, boolean status) { int rv = 0; String whereclause = DAYENTRIES_COL_DATE + "=?"; String[] whereargs = new String[]{date}; ContentValues cv = new ContentValues(); int value = 0; if (status) { value = 1; } switch (checkbox) { case 1: cv.put(DAYENTRIES_COL_CB01,value); break; case 2: cv.put(DAYENTRIES_COL_CB02,value); break; case 3: cv.put(DAYENTRIES_COL_CB03,value); break; case 4: cv.put(DAYENTRIES_COL_CB04,value); break; case 5: cv.put(DAYENTRIES_COL_CB05,value); break; case 6: cv.put(DAYENTRIES_COL_CB06,value); break; case 7: cv.put(DAYENTRIES_COL_CB07,value); break; case 8: cv.put(DAYENTRIES_COL_CB08,value); break; case 9: cv.put(DAYENTRIES_COL_CB09,value); break; case 10: cv.put(DAYENTRIES_COL_CB10,value); break; } if (cv.size() == 1) { rv = mDB.update(TB_DAYENTRIES,cv,whereclause,whereargs); } return rv; } public boolean isDayEntryCheckboxSet(String date, int checkbox) { boolean rv = false; String whereclause = DAYENTRIES_COL_DATE + "=?"; String[] whereargs = new String[]{date}; if (checkbox < 1 || checkbox > 10) { return false; } Cursor csr = mDB.query(TB_DAYENTRIES,null,whereclause,whereargs,null,null,null); if (csr.moveToFirst()) { rv = csr.getInt(csr.getColumnIndex(getCheckboxColumnNameFromNumber(checkbox))) == 1; } csr.close(); return rv; } private String getCheckboxColumnNameFromNumber(int checkbox) { switch (checkbox) { case 1: return DAYENTRIES_COL_CB01; case 2: return DAYENTRIES_COL_CB02; case 3: return DAYENTRIES_COL_CB03; case 4: return DAYENTRIES_COL_CB04; case 5: return DAYENTRIES_COL_CB05; case 6: return DAYENTRIES_COL_CB06; case 7: return DAYENTRIES_COL_CB07; case 8: return DAYENTRIES_COL_CB08; case 9: return DAYENTRIES_COL_CB09; case 10: return DAYENTRIES_COL_CB10; } return ""; } }
public class MainActivity extends AppCompatActivity { DBHelper mDB; ListView mLV; CBListAdapter mCBLA; Cursor mCsr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDB = new DBHelper(this); loadInitialData(); mCsr = mDB.getDateEntryListAsCursor(); mLV = this.findViewById(R.id.cblist); mCBLA = new CBListAdapter(this,mCsr); mLV.setAdapter(mCBLA); } protected void onResume() { super.onResume(); refreshDateEntryList(); } public void refreshDateEntryList() { mCsr = mDB.getDateEntryListAsCursor(); mCBLA.swapCursor(mCsr); } private void loadInitialData() { long rowcount = DatabaseUtils.queryNumEntries(mDB.getWritableDatabase(),DBHelper.TB_DAYENTRIES); if (rowcount > 0) return; String[] dates_to_add = new String[]{"2018-09-09","2018-09-10","2018-09-11"}; for (String s: dates_to_add) { mDB.addNewDayEntry(s); } mDB.setDayEntryForOneCheckBox("2018-09-10",3,true); mDB.setDayEntryForOneCheckBox("2018-09-09",9,true); } }