【发布时间】:2018-10-03 11:30:06
【问题描述】:
我正在构建一个应用程序,该应用程序需要从我的 Firebase 数据库中检索多个数据并将数据存储在我的应用程序中。
这是我的数据库结构,我想检索从 1 到最后一个数字的所有数据,以及检索每个数字内的数据。
有人知道怎么做吗?提前致谢。
【问题讨论】:
标签: java android firebase firebase-realtime-database
我正在构建一个应用程序,该应用程序需要从我的 Firebase 数据库中检索多个数据并将数据存储在我的应用程序中。
这是我的数据库结构,我想检索从 1 到最后一个数字的所有数据,以及检索每个数字内的数据。
有人知道怎么做吗?提前致谢。
【问题讨论】:
标签: java android firebase firebase-realtime-database
要获取Destination 节点下的所有对象,您需要使用getChildren() 方法迭代DataSnapshot 对象,如下所示:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference destinationRef = rootRef.child("Destination");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
Log.d(TAG, name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
destinationRef.addListenerForSingleValueEvent(valueEventListener);
如果您使用的是模型类,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference destinationRef = rootRef.child("Destination");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
YourClass yourClass = ds.getValue(YourClass.class);
Log.d(TAG, yourClass.getName());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
destinationRef.addListenerForSingleValueEvent(valueEventListener);
【讨论】:
尝试此代码并根据您的数据库名称等进行更改。
public class DisplayActivity extends AppCompatActivity {
private RecyclerView mRvData;
private DisplayAllData allDataAdapter;
private DatabaseReference mDatabase;
private TextView mTvEmpty;
private FirebaseDatabase mFirebaseInstance;
private List<User> mUserList = new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_data);
initView();
}
private void initView() {
mFirebaseInstance = FirebaseDatabase.getInstance();
mDatabase = mFirebaseInstance.getReference("usersDb/UserTable");
mRvData = findViewById(R.id.rvData);
mTvEmpty = findViewById(R.id.dlTvEmpty);
mRvData.setLayoutManager(new LinearLayoutManager(this));
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mUserList.clear();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
User user = dataSnapshot1.getValue(User.class);
mUserList.add(user);
}
allDataAdapter = new DisplayAllData(DisplayActivity.this, mUserList);
mRvData.setAdapter(allDataAdapter);
allDataAdapter.notifyDataSetChanged();
if (mUserList.isEmpty())
mTvEmpty.setVisibility(View.VISIBLE);
else
mTvEmpty.setVisibility(View.GONE);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
更多信息请参考此链接 https://www.simplifiedcoding.net/firebase-realtime-database-crud/
【讨论】: