![](/img/trans.png)
[英]What is the efficient way to compare a ArrayList of String in android
[英]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_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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.