我试图理解为什么我的for循环在每次迭代中一直显示以前的值。
for (String value : list)
{
String[] separated = value.split("/");
final String readTime = separated[0];
final String userID = separated[1];
db.collection("users").document(userID)
.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()){
DocumentSnapshot doc = task.getResult();
readHistoryFields.append("\nNolasīšanas laiks: ").append(readTime);
readHistoryFields.append("\nVārds: ").append(doc.get("Name"));
readHistoryFields.append("\nUzvārds: ").append(doc.get("Surname")).append("\n");
readHistory.add(readHistoryFields.toString());
adapter = new ArrayAdapter<String>(NFCReadHistory.this, android.R.layout.simple_list_item_1, readHistory);
listview.setAdapter(adapter);
}
}
});
}
我有一个这样的for循环。它需要显示Listview以及List内部的每个值。
显示结果时,它们会以这种方式显示。
Val1
Val1
Val2
Val1
Val2
Val3
...
据我所知应该是这样
Val1
Val2
Val3
...
在for循环内生成listview时是否缺少某些东西?
答案 0 :(得分:0)
您要在forloop中创建适配器对象并将其附加到listview。在每次迭代中,“ readHistory”都会增加,然后会添加到listview中。
解决方案:在循环外部创建具有最终项目列表的适配器对象,然后将其附加到listview。