加载Firebase数据库时显示进度条

时间:2017-05-29 09:52:44

标签: android firebase firebase-realtime-database android-progressbar

我在我的应用中使用Firebase实时数据库。我有listView和适配器,适配器的每个视图都从Firebase数据库加载一个项目。但是加载所有数据需要几秒钟(每个项目都有图像和名称)。所以我想向用户显示进度条或其他内容,但我不知道放在哪里。

我考虑使用asynctask或其他东西,但问题是我真的不知道数据的加载位置。我将子事件监听器附加到Firebase数据库引用对象,因此每次添加新子项时,适配器都会更新,但我不知道如何知道所有子项都已完成加载。

希望你了解我并帮助我。

1 个答案:

答案 0 :(得分:1)

看到这是一个设置一些数据的函数: -

     private void addUserChangeListener() {
    *** you can initialize your progress dialog here
                // User data change listener


      mFirebaseDatabase.child(userId).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    User user = dataSnapshot.getValue(User.class);


                    // Check for null
                    if (user == null) {
                        Log.e(TAG, "User data is null!");
                        return;
                    }

                    Log.e(TAG, "User data is changed!" + user.name + ", " + user.email);
    *** here you can check if the progress dialog is not null then close your progress dialog here

                    // Display newly updated name and email
                    txtDetails.setText(user.name + ", " + user.email);

                    // clear edit text
                    inputEmail.setText("");
                    inputName.setText("");

                    toggleButton();
                }

                @Override
                public void onCancelled(DatabaseError error) {
                    // Failed to read value
***also close your progress dialog here
                    Log.e(TAG, "Failed to read user", error.toException());
                }

            });
        }