我正在尝试更新我的复选框,例如如果patientPHhistory为"是",Patient复选框将为勾号。我能够从数据库中检索除这两个值之外的所有值。然而,也存在一些问题,例如当patientPHhistory和patientPPhysical都为"是"时,两个复选框都会勾选,但当数据库中只有patientPHHistory或patientPPphysical中的一个为"是"时,所有复选框都不会勾选。
对于示例数据库映像,它位于以下链接中:https://i.stack.imgur.com/TMAd3.jpg
例如,B.K.K会同时勾选两个复选框,但B.K.Z.W和T.Y.Y即使有"是"也不会勾选。
private CheckBox History, Physical;
private void RetrieveDataFromDatabase(String res)
{
patientPHistory = "";
patientPPhysical = "";
myContext = this;
patientDB = new PatientDB(myContext);
patientDB.open();
Cursor patientCursor;
patientCursor = patientDB.retrieveAllBasedOnInitials(res);
if(patientCursor!=null && patientCursor.getCount()>0)
{
patientCursor.moveToFirst();
do
{
patientCursor.getString(patientDB.COLUMN_KEY_ID); // + " " +
patientInitials = patientCursor.getString(patientDB.COLUMN_INITIALS_ID);
patientDate = patientCursor.getString(patientDB.COLUMN_DATE_ID);
patientSite = patientCursor.getString(patientDB.COLUMN_SITE_ID);
patientWard = patientCursor.getString(patientDB.COLUMN_WARD_ID);
patientPHistory = patientCursor.getString(patientDB.COLUMN_PERF_HISTORY_ID);
patientPPhysical = patientCursor.getString(patientDB.COLUMN_PERF_PHYSICAL_ID);
Log.i("ward", patientWard);
Log.i("date", patientDate);
Log.i("site", patientSite);
Log.i("history", patientPHistory);
Log.i("physical", patientPPhysical);
//SET THEM
DateOfDiagnosis.setText(patientDate);
Ward.setText(patientWard);
if (patientPHistory.contains("Yes"))
{
History.setChecked(true);
}
else if (patientPHistory.contains("No"))
{
History.setChecked(false);
}
if (patientPPhysical.contains("Yes"))
{
Physical.setChecked(true);
}
else if (patientPPhysical.contains("No"))
{
Physical.setChecked(false);
}
//Set to spinner
List<String> newlist = new ArrayList<String>();
newlist.add(patientSite);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, newlist);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
SpinnerSite.setAdapter(dataAdapter);
}
while (patientCursor.moveToNext());
}
}
如果只有yes或no值,则仅使用else而不是else If即
if (patientPHistory.contains("Yes"))
{
History.setChecked(true);
Log.i("checked or not","yes");
}
else
{
History.setChecked(false);
Log.i("checked or not","no");
}
我意识到我的光标有两个相同的实体,这导致了这个错误,感谢你的帮助,这是我的疏忽。