2017-11-22 7 views
0

私はキーを含む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"); 

中: enter image description here

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

データベース構造を追加し、取得したい正確なデータを示してください。 –

+0

@AlexMamo IVがqnを更新しました – raxx

答えて

1

この問題を解決するには、このコードの3行を組み合わせました: Log.i("GTA","HHH");

+0

まだ動作しません。 checkout.toStringは[-KzIBRriUyBNT2ZgPngt、-KzIBZ0aFmNjixTc1dRz]を印刷していますので、DBに2つの書籍5点しか入れないようにしてください。 – raxx

+0

あなたのコメントには、5つではなく、-KzIBRriUyBNT2ZgPngtとKzIBZ0aFmNjIXTc1dRzという2つしかありません。何かが欠けている? –

+0

エラーが発生しました。私のように愚かな、そこにあります。 if条件でループを常に実行させる。 – raxx

関連する問題