我有一个包含键的Arraylist checkOutBook。其打印正确以记录消息。但是-我只想要与listview中的checkOutBook键匹配的书,但是我却在数据库中获取所有书。

在onPostResume方法中,Im使用checkOutBook Sting列表检查firebase实时数据库的每个键,如果仅为true,则应添加它。但是它对于数据库中的每个键都是正确的,但是在checkOutBook数组中不存在。我不知道这是什么问题。
java - 在ListView中没有获取正确的数据-LMLPHP

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());

            }
        });


    }

最佳答案

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

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




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


将以下新代码行移动到onDataChange()方法中的该行之后:Log.i("GTA","HHH");

09-25 20:53