无法将值更新到复选框Android



我正在尝试更新我的复选框,例如如果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");
            }

我意识到我的光标有两个相同的实体,这导致了这个错误,感谢你的帮助,这是我的疏忽。

最新更新