作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将数据添加到 For 循环内的 ArrayList,但它不起作用。
我在 Firebase 中有一个 Cloud Firestore,其中包含另一个应用的文档集合。这个目的是获取数据并将其放入回收器 View 中。适配器和一切都已设置。据我所知,问题在于填充 For 循环内的(数组)列表? (因为仅填写此循环内的任何数据也是行不通的,但我不确定。)我使用注释指出了代码中的一些尝试和错误。我确信,这一定只是一些小错误,但我真的找不到它。在 For-Loop 外部使用完全相同的代码添加数据可以,但在内部则不起作用(请参阅“Blah”)
private ArrayList<String> patients;
private String testString;
//-> String einzig zu Testzwecken
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
patients = new ArrayList<>();
textView = findViewById(R.id.textView);
db.collection("Test")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
//patients = new ArrayList<>();
//-> doesn't work
patients.add((document.getData().toString()));
//doesn't work
listData.add(new Data(R.drawable.hohlbrot, "ahjotest"));
//doesn't work (trying to feed the recyclerView more directly)
//Toast.makeText(MainActivity.this, document.getData().toString(), Toast.LENGTH_SHORT).show();
//textView.setText(document.getData().toString());
// -> both work
testString = testString + document.getData().toString();
textView.setText(testString);
// -> works
patients.add("Blah1");
//doesn't work
//Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
//Log.d(TAG, "Error getting documents: ", task.getException());
patients.add("BlahError");
}
}
});
patients.add("Blah2");
//works
嗯,我尝试了几件事,但是按照我期望的设置,没有错误消息。它只是没有做任何事情。在 RecyclerView 中,“Blah2”会出现,就像我稍后添加的任何字符串一样。我在 For-Loop 中尝试的任何东西(Toast、String-to-TextView...)实际上都有效,只要它不使用 ArrayList。
PS:我是菜鸟,请耐心等待-.-
最佳答案
如果您使用的是 firebase,请尝试在 OnSuccessListener 中运行 for 循环。
语法类似于:
firebaseFirestore.collection("some collection").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
//do your work here
})
关于java - 添加到数组列表在 For 循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707667/
我是一名优秀的程序员,十分优秀!