3 回答

TA贡献1818条经验 获得超8个赞
allLocations = new ArrayList<>();
Log.d(TAG , "Size is " + allLocations.size());
里面还什么都没有。因此它的大小为零。
后来你在里面放了一些东西:
allLocations.add(newUt);
}
Log.d("ArraySize" , "Size is " + allLocations.size());
现在它的大小增加了(根据前面的 for 循环增加了一些元素)

TA贡献1794条经验 获得超8个赞
您在分配后将数组大小记录在 main 中。所以它是0。但是onDataChange
你已经把数据放在那个数组中了allLocations.add(newUt);
。所以它显示的大小等于插入其中的数据数量。

TA贡献1818条经验 获得超11个赞
首先,您正在初始化您的 Arraylist。这里
allLocations = new ArrayList<>();
Log.d(TAG , "Size is " + allLocations.size());
所以它用空数据初始化。里面什么都没有。之后,addValueEventListener您将向allLocationsArrayList 添加数据。
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
allLocations.clear();
for (DataSnapshot allLocs : dataSnapshot.getChildren()) {
Utilities newUt = allLocs.getValue(Utilities.class);
allLocations.add(newUt);
}
所以现在它有值了。
添加回答
举报