android - 如何更新 fire-base 数据库 android 中的嵌套数据

标签 android firebase firebase-realtime-database

Nested data in firebase database snap pic 大家好,我将数据存储在包含嵌套子项的实时数据库中,并且我通过使用推送功能存储了这些数据以避免覆盖问题,但现在的问题是我不知道如何获取我已经强调的特定数据在快照图像中。不幸的是,我正在努力研究如何获取嵌套数据以执行编辑或删除功能。下面是addUser类和取数据到RecyclerView的部分

public class AddUserAppointment {

   private String StartBusinse;
   private String StartBusinseTime ;
    private String EndBusinseTime ;
   private String startFirstAppoint ;
   private String endSecondAppointment ;
   private String AppointmentStuts;
  // private String AppointmentKey;  

    public AddUserAppointment() {
        ////empty
    }

    public AddUserAppointment(String startBusinse, String startBusinseTime, String endBusinseTime, String startFirstAppoint, String endSecondAppointment, String appointmentStuts) {
        StartBusinse = startBusinse;
        StartBusinseTime = startBusinseTime;
        EndBusinseTime = endBusinseTime;
        this.startFirstAppoint = startFirstAppoint;
        this.endSecondAppointment = endSecondAppointment;
        AppointmentStuts = appointmentStuts;
    }

    public String getStartBusinse() {
        return StartBusinse;
    }

    public void setStartBusinse(String startBusinse) {
        StartBusinse = startBusinse;
    }

    public String getStartBusinseTime() {
        return StartBusinseTime;
    }

    public void setStartBusinseTime(String startBusinseTime) {
        StartBusinseTime = startBusinseTime;
    }

    public String getEndBusinseTime() {
        return EndBusinseTime;
    }

    public void setEndBusinseTime(String endBusinseTime) {
        EndBusinseTime = endBusinseTime;
    }

    public String getStartFirstAppoint() {
        return startFirstAppoint;
    }

    public void setStartFirstAppoint(String startFirstAppoint) {
        this.startFirstAppoint = startFirstAppoint;
    }

    public String getEndSecondAppointment() {
        return endSecondAppointment;
    }

    public void setEndSecondAppointment(String endSecondAppointment) {
        this.endSecondAppointment = endSecondAppointment;
    }

    public String getAppointmentStuts() {
        return AppointmentStuts;
    }

    public void setAppointmentStuts(String appointmentStuts) {
        AppointmentStuts = appointmentStuts;
    }

获取数据类

public class ListAppointmentCustomerClass extends AppCompatActivity {
    private DatabaseReference AppointmentRef,SeconDref;
    private FirebaseAuth mAuth;
    private String PostKey;
    private RecyclerView ListAllApointment;
    private String pushkey;
    private Button Book,Cancel;
    private String AppointmentKey;
    private String keyId;
    private String m_Text = "";
    private boolean AppointmentCondation = true;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_appointment_customer_class);
        //pushkey = AppointmentRef.getKey();

        PostKey = getIntent().getExtras().get("Postkey").toString();

        AppointmentRef = FirebaseDatabase.getInstance().getReference().child("Appointments").child(PostKey);

        ///

        ////
        ListAllApointment = (RecyclerView)findViewById(R.id.ListAppointmentView);
        LinearLayoutManager customerLayoutManager = new LinearLayoutManager(this);
        customerLayoutManager.setReverseLayout(true);
        customerLayoutManager.setStackFromEnd(true);
        ListAllApointment.setLayoutManager(customerLayoutManager);
        //TODO:All the methods shoud be list here
        DisplayuploadedAppointment();
    }

    public static class HolderClass extends RecyclerView.ViewHolder{
        View mView;
        Button bookAppointment , CancelAppoinment;

        public HolderClass(View itemView) {
            super(itemView);
            mView = itemView;

            bookAppointment = (Button)mView.findViewById(R.id.BookAnppointments);

        }

        public void setStartFirstAppoint(String startFirstAppoint){
          TextView StartAppointment = (TextView)mView.findViewById(R.id.StartAppointmet);
          StartAppointment.setText(startFirstAppoint);
        }
        public void setEndSecondAppointment(String endSecondAppointment){
            TextView EndAppointment = (TextView)mView.findViewById(R.id.EndAppointment);
            EndAppointment.setText(endSecondAppointment);

        }
        public void setAppointmentStuts(String appointmentStuts){
            TextView appointment = (TextView)mView.findViewById(R.id.BookingStatus);
            appointment.setText(appointmentStuts);
        }



    }

    private void DisplayuploadedAppointment() {
        FirebaseRecyclerAdapter<AddUserAppointment,HolderClass >AppointmentRecyclerAdapter =
                new FirebaseRecyclerAdapter<AddUserAppointment, HolderClass>
                        (
                                AddUserAppointment.class,
                                R.layout.listallapointment,
                                HolderClass.class,
                                AppointmentRef
                        ) {
                    @Override
                    protected void populateViewHolder(HolderClass viewHolder, AddUserAppointment model, final int position)
                    {


                        viewHolder.setStartFirstAppoint(model.getStartFirstAppoint());
                        viewHolder.setEndSecondAppointment(model.getEndSecondAppointment());
                        viewHolder.setAppointmentStuts(model.getAppointmentStuts());
                        viewHolder.mView.setTag(position);
                        viewHolder.bookAppointment.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("Appointments").child(PostKey);

                                final String id = getRef(position).getKey();
                                mDatabase.child(id).addValueEventListener(new ValueEventListener() {
                                    @Override
                                    public void onDataChange(DataSnapshot dataSnapshot) {
                                        for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                                            System.out.println("Id"+id);
                                            String bookingCondation = dataSnapshot.child("appointmentStuts").getValue().toString() ;
                                            HashMap hashMap = new HashMap<>();
                                            hashMap.put("appointmentStuts","Boooked");

                                           System.out.println("Postkey"+PostKey);
                                           mDatabase.updateChildren(hashMap).addOnCompleteListener(new OnCompleteListener() {
                                               @Override
                                               public void onComplete(@NonNull Task task) {

                                               }
                                           });



//                                            String key = snapshot.getKey().toString();
//                                            System.out.println(key);


//                                            String bookingCondation = dataSnapshot.child("appointmentStuts").getValue().toString() ;
//                                            System.out.println("Appointment Status "+bookingCondation);

                                           // Log.e("Appointment : " , "" + appointmentStuts+ap.getStartFirstAppoint()+key);


                                        }

                                    }

                                    @Override
                                    public void onCancelled(DatabaseError databaseError) {

                                    }
                                });

                            }
                        });


                    }
                };
        ListAllApointment.setAdapter(AppointmentRecyclerAdapter);



    }



    }

最佳答案

您可以像这样遍历用户以获取他们的数据:

  DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Appointments").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();

            while (dataSnapshots.hasNext()) {
                DataSnapshot dataSnapshotChild = dataSnapshots.next();
                AddUserAppointment user = dataSnapshotChild.getValue(AddUserAppointment.class);
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

关于android - 如何更新 fire-base 数据库 android 中的嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52156206/

相关文章:

android - 如何在 Android 应用程序中显示日历 UI?

java - RxJava : Consume result of Observable on another thread

android - Firebase 离线功能和 addListenerForSingleValueEvent

javascript - Firebase 云函数发出 POST 请求

swift - 用于显示来自 Firebase 的子值计数的 UIButton 标签

java - 将 ViewHolder 与 ListView 结合使用

android - 将拉取刷新设置为在开始或恢复 fragment 时刷新

android - 选择文档字段包含 Firestore 中的字符串的位置?

javascript - 如何在 Node.js 中上传文件到 GCloud?

android - FireBase,同时连接?