私はキーを含むArraylist checkOutBookを持っています。そのメッセージを正しく記録してください。しかし、私はリストビューのcheckOutBookのキーと一致する本のみを望んでいますが、データベース内のすべての書籍を取得しています。ListViewで正しいデータが取得されない
onPostResumeメソッドでは、checkOutBookスティンリストを使用してfirebaseリアルタイムデータベースの各キーをチェックします。真の場合のみ追加する必要があります。しかし、それはデータベースの各キーに当てはまりますが、checkOutBook配列には存在しません。私はここで何が問題か分からない。右のこの行の後、あなたのonDataChange()
方法で
private ArrayList<String> checkOutBook;
checkOutBook = new ArrayList<>();
checkOutBook =intent.getStringArrayListExtra("value");
移動コードのこの新しい行を
ArrayList<String> checkOutBook = intent.getStringArrayListExtra("value");
中:
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());
}
});
}
データベース構造を追加し、取得したい正確なデータを示してください。 –
@AlexMamo IVがqnを更新しました – raxx