有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java仅打印完成的成员列表

所以代码现在看起来像这样

问题是我得到了不止一个日志打印。但我只需要完整完整的墨伯里斯特

for (String memberByNumber : memberListByNumber) {
                    mFirebaseDatabaseReference.child("userUidsByNumber/").child(memberByNumber).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if (dataSnapshot.exists()) {
                                String userUid = dataSnapshot.getValue().toString();
                                memberList.add(userUid);

                                Log.d("LOL", "ContactsAdapter: " + memberList);
                            } else {
                                Snackbar.make(view, R.string.user_does_not_exist, Snackbar.LENGTH_LONG).show();
                            }
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                            Snackbar.make(view, R.string.error, Snackbar.LENGTH_LONG).show();
                        }
                    });
                }

我希望你能理解我的问题并能帮助我。 提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    我想发表评论,但由于我在这里的声誉,我不能发表评论 所以,我的答案是,将每个条目记录到一个文件中,这样只会使打印必要的条目变得更加困难,所以在不同的路径上,在现有的一个文件中再给出一个if-else语句,并使用try-exception将完成的和取消的条目划分到一些缓存中,然后使完成的文件无效

  2. # 2 楼答案

    在firebase中,没有一件事是完整的

    只要任何子节点下的任何数据发生更改,值事件就会不断发生。此外,值事件发生在所有子事件完成后,即确保该点的所有子节点都存在。下一个事件将为您提供该特定点的完整列表

    在每次数据更改调用中,您可以清除列表,添加所有新值并打印。这就是firebase的工作原理

    如果只需要整个列表一次,并且不需要任何新的更改,可以使用addListenerForSingleValueEvent方法添加值事件侦听器。现在,列表将被读取一次,不再读取。但是,如果启用了持久性,数据将从手机缓存中读取一次,而不是从数据库中读取

    也许你要找的是一个ChildEventListener,它能让你更精确地控制。这将有子添加、删除和更改事件,这些事件将一次为您提供一个子列表数据

    我不知道你的真正目的是什么,所以这是我能解释的最好的解释。希望这有帮助