简介:我创建了我的应用程序的数据库,如下图所示。Android:读取子节点的密钥
为了显示用户保存的书籍,我想先读取用户的书籍键(位于user-books
目录),并保存所有这些密钥的一个ArrayList,所以我可以在以后的负载(从books
目录)与名为MybooksFragment
的片段中的这些键相对应的BookObjects。
注:我想获得和在ListView显示这些按键,你可以看到下面:(要确保我得到正确的键)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my_books, container, false);
final ListView booksIdListView = (ListView) view.findViewById(R.id.booksIdListView);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = database.getReference();
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String UID = user.getUid();
databaseReference.child("books").child(UID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> booksId = new ArrayList<String>();
for (DataSnapshot child: dataSnapshot.getChildren()) {
String userBookId = child.getKey();
booksId.add(userBookId);
}
ArrayAdapter<String> myBooksAdapter = new ArrayAdapter<String>(getActivity() ,
android.R.layout.simple_list_item_1 , booksId);
booksIdListView.setAdapter(myBooksAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
不幸ListView仍然是空的(没有像我希望的那样填充键)。 我在做什么错?
注:我使用这个数据库模型,所以我可以躲开的重复数据
尝试使用Firebase的listadapter来填充节点 –