我有一个包含键的Arraylist checkOutBook。它正确打印到日志消息。但是 - 我只想在列表视图中找到与checkOutBook键相匹配的书籍,但是我将所有书籍都放在数据库中。
在onPostResume方法中,我使用checkOutBook Sting列表检查firebase实时数据库的每个键,如果只是true,则应该添加它。但是它对于数据库中的每个键都是正确的,但是checkOutBook数组中没有这个键。我不知道这里的问题是什么。
private ArrayList<String> checkOutBook;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
checkOutBook = new ArrayList<>();
Intent intent = getIntent();
checkOutBook =intent.getStringArrayListExtra("value");
Log.i("vvvv",checkOutBook.toString());
....
}
@Override
protected void onPostResume() {
super.onPostResume();
Log.i("yyy","onresume");
mAdapter.clear();
//to check if the university ID is already registered
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("GTA","HHH");
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
if(checkOutBook.contains(postSnapshot.getKey()));
{
Log.i("RRR","HHH");
BooksWithKey book = new BooksWithKey(postSnapshot.getKey(), postSnapshot.child("bookName").getValue().toString(), postSnapshot.child("author").getValue().toString(),
postSnapshot.child("copies").getValue().toString(), postSnapshot.child("publisher").getValue().toString(), postSnapshot.child("yearPublish").getValue().toString(), postSnapshot.child("callNumber").getValue().toString());
mAdapter.add(book);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w("TAG", "loadPost:onCancelled", databaseError.toException());
}
});
}
答案 0 :(得分:1)
要解决此问题,请结合以下三行代码:
private ArrayList<String> checkOutBook;
checkOutBook = new ArrayList<>();
checkOutBook =intent.getStringArrayListExtra("value");
在
ArrayList<String> checkOutBook = intent.getStringArrayListExtra("value");
在此行之后的onDataChange()
方法中移动此新代码行:Log.i("GTA","HHH");
。