【发布时间】:2019-11-17 18:04:33
【问题描述】:
我的 Firebase 实时数据库结构
我在一个电子书项目中制作了两个应用程序,一个供管理员使用,另一个供用户使用。
当管理员在 Firebase 上输入图书数据时,用户将能够在其应用中看到管理员提供的信息。
我在用户应用程序上执行了此操作,但管理员 ID 仍然具有以下键的值为 null。
当我调试应用程序时,我的DataSnapshot 向我显示了键的 null 值。
我的应用调试模式:
when I get admin Uid but it show me null
when I set admin id in database Reference and its get Uid
and I'm get admin Id throw database reference but it dataSnapshot key's value is null
这是我的代码:
private String adminId;
private Button button1,button2,button3;
private RecyclerView bookListRv;
private ArrayList<Book> bookList;
private BookAdapter bookAdapter;
private FirebaseAuth firebaseAuth;
private DatabaseReference databaseReference;
public BookListFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_book_list, container, false);
init(view);
adminId = firebaseAuth.getUid();
configRv();
getBooks();
return view;
}
private void init(View view) {
bookListRv = view.findViewById(R.id.bookRVId);
firebaseAuth = firebaseAuth.getInstance();
databaseReference = FirebaseDatabase.getInstance().getReference();
bookList = new ArrayList<>();
bookAdapter = new BookAdapter(bookList, getContext());
}
private void configRv() {
bookListRv.setLayoutManager(new LinearLayoutManager(getContext()));
bookListRv.setAdapter(bookAdapter);
}
private void getBooks(){
DatabaseReference showBookRef = databaseReference.child("Books").child(adminId);
showBookRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot data:dataSnapshot.getChildren()){
Book book = data.child("BookInfo").getValue(Book.class);
bookList.add(book);
bookAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
任何帮助我的感激之情
【问题讨论】:
-
第一步是停止忽略潜在的错误并实施
onCancelled。最低实现是public void onCancelled(@NonNull DatabaseError databaseError) { throw databaseError.toException(); }。
标签: java android firebase firebase-realtime-database