想要在我的 Android 测验应用程序中加载用户测验结果。我从数据库中获取字符串形式的结果。在下一步中,我将此字符串转换为数组,然后转换为数组列表。然后我迭代列表以获取复选框的 id,比较它们并检查它们是否匹配。
userResultCursor = db.getUserResults(question.getId());
if (userResultCursor != null && userResultCursor.getCount() != 0) {
String resultString = userResultCursor
.getString(userResultCursor.getColumnIndexOrThrow(MyDatabase.ResultColumns.RESULT));
String resultArray[] = convertStringToArray(resultString);
List<String> resultList = Arrays.asList(resultArray);
for (String id : resultList) {
if (cb_answer1.getId() == Integer.parseInt(id)) {
cb_answer1.setChecked(true);
}
if (cb_answer2.getId() == Integer.parseInt(id)) {
cb_answer2.setChecked(true);
}
if (cb_answer3.getId() == Integer.parseInt(id)) {
cb_answer3.setChecked(true);
}
if (cb_answer4.getId() == Integer.parseInt(id)) {
cb_answer4.setChecked(true);
}
if (cb_answer5.getId() == Integer.parseInt(id)) {
cb_answer5.setChecked(true);
}
}
}
我实际上不喜欢这个解决方案,因为它看起来很尴尬。 我认为对此有更好的解决方案。 您有什么技巧可以有效地获得相同的结果吗?
最佳答案
您可以缩短此代码,但就性能而言,就我而言,它实际上效率不高。
您看到那些重复的 cb_answer1
、cb_answer2
、cb_answer3
了吗?这意味着您可能需要一个数组:
CheckBox[] answerCheckBoxes = { cb_answer1, cb_answer2, cb_answer3 }
// I'm lazy. Please add the rest in yourself
现在您可以循环它:
for (CheckBox cb : answerCheckBoxes) {
if (cb.getId() == Integer.parseInt(id)) {
cb.setChecked(true);
}
}
关于java - Android - 比较 Array/Arraylist 元素以预先检查复选框的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38169901/