簡體   English   中英

Android-比較Array / Arraylist元素以預先選中復選框的有效方法

[英]Android - Efficient way to compare elements of Array/Arraylist to precheck checkboxes

要加載用戶測驗結果在我的Android測驗應用程序中。 我從數據庫中以字符串形式獲取結果。 在下一步中,我將該字符串轉換為數組,然后轉換為arraylist。 然后,我遍歷列表以獲取復選框的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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM