在ListView中没有获得正确的数据

时间:2017-11-22 09:12:50

标签: java android firebase firebase-realtime-database

我有一个包含键的Arraylist checkOutBook。它正确打印到日志消息。但是 - 我只想在列表视图中找到与checkOutBook键相匹配的书籍,但是我将所有书籍都放在数据库中。

在onPostResume方法中,我使用checkOutBook Sting列表检查firebase实时数据库的每个键,如果只是true,则应该添加它。但是它对于数据库中的每个键都是正确的,但是checkOutBook数组中没有这个键。我不知道这里的问题是什么。 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());

            }
        });


    }

1 个答案:

答案 0 :(得分:1)

要解决此问题,请结合以下三行代码:

private ArrayList<String>  checkOutBook;
checkOutBook = new ArrayList<>();
checkOutBook =intent.getStringArrayListExtra("value");

ArrayList<String> checkOutBook = intent.getStringArrayListExtra("value");

在此行之后的onDataChange()方法中移动此新代码行:Log.i("GTA","HHH");