【发布时间】:2013-12-02 23:48:50
【问题描述】:
我正在尝试更新我的复选框,例如如果 patientPHistory 为“是”,则 Patient 复选框将是一个勾号。我能够从数据库中检索除这两个之外的所有值。 但是有一些问题,例如当 patientPHistory 和 patientPPhysical 都是“是”并且两个复选框都会打勾,但是当数据库中只有一个 patientPHistory 或 patientPPhysical 是“是”时,所有复选框都不会打勾。
对于示例数据库图像,它在此链接中:http://imgur.com/kHfZPkE
例如,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());
}
}
【问题讨论】:
-
你不认为在你的情况下应该是“patientPPhysical.equals("NO")”吗?
-
我想你还没有初始化
History。你必须在访问它之前做这样的事情Hitory = (CheckBox) findViewById(R.id.historyid); -
Vishwas,我尝试了 .matches .equals 和 .contains - 如果我的两个数据都包含一个是,则所有这些都不起作用
-
Abhishek,我可以检查身体和历史是否都是肯定的,但当其中一个是肯定时则不能
-
所以你的问题是斯宾塞。您的数据库返回错误信息。大多数情况下,您对数据库的输入是错误的。对于 B.K.Z.W,它应该是“是”和“否”。
标签: java android database sqlite checkbox