java - Android - 比较 Array/Arraylist 元素以预先检查复选框的有效方法

标签 java android arrays list arraylist

想要在我的 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_answer1cb_answer2cb_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/

相关文章:

java - 尝试在 Android Studio 上使用 Room

java - 货币转换器无法正确转换

python - 如何在 python 中的二维数组中加速二维数组?

java - 如何构建具有依赖关系的 OSGi 服务并通过 DS 发布

java - Apache Commons StringUtils.repeat() 是如何工作的以及为什么它以这种方式工作?

java - 在 spring mvc Controller 中使用服务和 DAO

c - (双)for 循环与 C 中的变量索引

java - 这两个代码之间的区别?

android - SourceCodeScanner 不调用 visitMethodCall

python - 使用 Cython 包装 C++ 模板以接受任何 numpy 数组