我在按钮单击内调用addValueEventListener
,但是此方法仅读取节点中的最后一项。我想读取节点中的所有子值,这里出了什么问题?
btnorder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
{
SelectedItems si=dataSnapshot1.getValue(SelectedItems.class);
si.getItemname();
Toast.makeText(MyBookedItems.this, ""+si.getItemname(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
我认为您可以创建一个数组列表并将所有快照数据放入其中,然后可以通过从列表的长度中减去一个,找到具有找到值的列表的最后一个数据。对不起,我的英语不好:(我试图在下面的代码中的解决方案中解释)
ArrayList<SelectedItems> selectedItems = new ArrayList<SelectedItems>();
for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
{
SelectedItems si=dataSnapshot1.getValue(SelectedItems.class);
selectedItems.add(si);
}
selectedItems.get(selectedItems.size());
它读取了所有值,但是我得到的输出是Toast消息,因此我只能看到最后一个值)