循环遍历 List 并根据数据创建视图
Looping through List and creating views dependent on the data
我目前有两个列表:
List<String> listUserAnswers = splitWords(answer);
List<String> listRealAnswers = splitWords(realAnswer);
我的主要目标是遍历这些并根据数据创建不同的视图。例如,对于每个 correctAnswer,我将创建一种视图,对于 incorrectAnswer,我将创建另一种视图。
然后我循环遍历两个列表:
for (String userAnswer : listUserAnswers) {
for (String realAnswer : listRealAnswers) {
if (userAnswer.equals(realAnswer)) {
correctLayout = createCorrectView(userAnswer);
newCorrectViews.add(correctLayout);
} else {
incorrectLayout = createIncorrectView(userAnswer);
newIncorrectViews.add(incorrectLayout);
}
}
}
然后我检查 userAnswer 是否与 realAnswer 匹配,然后创建视图。
但是,我遇到的问题是,如果 realAnswer 是:
[This, Is, The, Real, Answer]
并且用户输入:
[This, Is, Real]
然后前两个词应该在屏幕上显示为正确,'Real' 不正确。
然而,实际情况是:
[This, Is, This, This, Is, Is, Real, Real]
-> 其中 [This, Is]
正确,其余标记为不正确。
有什么想法吗?
你不应该有一个内循环。你只需要一个循环,所以不要使用增强循环。
您可以使用类似的东西:
minSize = listUserAnswers.size() > listRealAnswers.size() ? listUserAnswers.size() : listRealAnswers.size();
for(int i = 0; i < minSize; i++)
String userAnswer = listUserAnswers.get(i);
String realAnswer = listRealAnswers.get(i);
if(userAnswer.equals(realAnswer))
....
它只检查相同位置的实际单词。
我目前有两个列表:
List<String> listUserAnswers = splitWords(answer);
List<String> listRealAnswers = splitWords(realAnswer);
我的主要目标是遍历这些并根据数据创建不同的视图。例如,对于每个 correctAnswer,我将创建一种视图,对于 incorrectAnswer,我将创建另一种视图。
然后我循环遍历两个列表:
for (String userAnswer : listUserAnswers) {
for (String realAnswer : listRealAnswers) {
if (userAnswer.equals(realAnswer)) {
correctLayout = createCorrectView(userAnswer);
newCorrectViews.add(correctLayout);
} else {
incorrectLayout = createIncorrectView(userAnswer);
newIncorrectViews.add(incorrectLayout);
}
}
}
然后我检查 userAnswer 是否与 realAnswer 匹配,然后创建视图。
但是,我遇到的问题是,如果 realAnswer 是:
[This, Is, The, Real, Answer]
并且用户输入:
[This, Is, Real]
然后前两个词应该在屏幕上显示为正确,'Real' 不正确。
然而,实际情况是:
[This, Is, This, This, Is, Is, Real, Real]
-> 其中 [This, Is]
正确,其余标记为不正确。
有什么想法吗?
你不应该有一个内循环。你只需要一个循环,所以不要使用增强循环。
您可以使用类似的东西:
minSize = listUserAnswers.size() > listRealAnswers.size() ? listUserAnswers.size() : listRealAnswers.size();
for(int i = 0; i < minSize; i++)
String userAnswer = listUserAnswers.get(i);
String realAnswer = listRealAnswers.get(i);
if(userAnswer.equals(realAnswer))
....
它只检查相同位置的实际单词。