Как получить данные в My RecyclerView из базы данных, My RecyclerView показать пустой

Моя Firebase и как мой RecyclerView дисплей после моего кода

Так я сохраняю свои данные

saveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            firebaseAuth = FirebaseAuth.getInstance();
            mCurrentUser = firebaseAuth.getCurrentUser();
            DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("Email").child(mCurrentUser.getUid()).child("Appointment").push();
            String name = nameTxt.getText().toString().trim();
            String address = addressTxt.getText().toString().trim();
            String tel = telTxt.getText().toString().trim();
            String date = dateApp.getText().toString().trim();
            String time = timeApp.getText().toString().trim();

            //Adding values
            db.child("Name").setValue(name);
            db.child("Address").setValue(address);
            db.child("Tel").setValue(tel);
            db.child("Date").setValue(date);
            db.child("Time").setValue(time);

            //Storing values to Firebase
            Toast.makeText(AddAppointment.this,"Saved",Toast.LENGTH_SHORT).show();
            Intent mainIntent = new Intent(AddAppointment.this,Appointment.class);
            startActivity(mainIntent);
        }
    });

Мой код для получения данных в RecyclerView «, но без успеха»

public class ViewAppointment extends AppCompatActivity {

    private FirebaseAuth firebaseAuth;
    private FirebaseUser mCurrentUser;
    private DatabaseReference db;
    private RecyclerView recyclerView;
    private FirebaseListAdapter<AppointmentData> mAdapter;

    ImageButton refreshBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_appointment);

        recyclerView = (RecyclerView)findViewById(R.id.recycle);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        firebaseAuth = FirebaseAuth.getInstance();

        mCurrentUser = firebaseAuth.getCurrentUser();
        db = FirebaseDatabase.getInstance().getReference().child("Email").child(mCurrentUser.getUid()).child("Appointment");
        db.keepSynced(true);
        addListenerOnButton();
        FirebaseRecyclerAdapter<AppointmentData, myViewHolder> adapter = new FirebaseRecyclerAdapter<AppointmentData, myViewHolder>
            (AppointmentData.class,R.layout.model,myViewHolder.class,db) {

            @Override
            protected void populateViewHolder(myViewHolder viewHolder, AppointmentData model, int position) {
                viewHolder.nameTxt.setText(model.getName());
                viewHolder.dateApp.setText(model.getDate());
                viewHolder.timeApp.setText(model.getTime());
            }
        };
        recyclerView.setAdapter(adapter);
    }

    public static class myViewHolder extends RecyclerView.ViewHolder {
        private TextView nameTxt,dateApp,timeApp;

        public myViewHolder(View itemView){
            super(itemView);
            nameTxt = (TextView)itemView.findViewById(R.id.nameTxt);
            dateApp = (TextView) itemView.findViewById(R.id.dateAppointment);
            timeApp = (TextView)itemView.findViewById(R.id.timeAppointment);
        }
    }
}

Назначение data.Ява

public class AppointmentData {

    private String name, tel, address, time, date;

    public AppointmentData() {

    }

    public void setName(String name) {
        this.name = name;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public AppointmentData(String name, String tel, String address, String time, String date) {
        this.name = name;
        this.tel = tel;
        this.address = address;
        this.time = time;
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public String getTel() {
        return tel;
    }

    public String getAddress() {
        return address;
    }

    public String getDate() {
        return date;
    }

    public String getTime() {
        return time;
    }
}

Модель.XML-макет RecyclerView

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 
android_orientation="horizontal" android_layout_width="match_parent"

android_layout_margin="10dp"
card_view_cardCornerRadius="5dp"
card_view_cardElevation="5dp"
android_layout_height="wrap_content">

<LinearLayout
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_background="?android:attr/colorControlHighlight"
    android_orientation="vertical">


    <TextView
        android_layout_width="match_parent"
        android_layout_height="wrap_content"
        android_textAppearance="?android:attr/textAppearanceLarge"
        android_text="Name"
        android_id="@+id/nameTxt"
        android_padding="10dp"
        android_textColor="@android:color/black"
        android_textStyle="bold"
        android_layout_alignParentLeft="true"
        android_background="@android:color/holo_blue_light" />

    <LinearLayout
        android_layout_width="match_parent"
        android_layout_height="wrap_content"
        android_background="@color/cast_intro_overlay_button_background_color">

        <TextView
            android_text="Date"
            android_layout_width="185dp"
            android_layout_height="wrap_content"
            android_id="@+id/dateAppointment" />

        <TextView
            android_text="Time"
            android_layout_width="wrap_content"
            android_layout_height="wrap_content"
            android_id="@+id/timeAppointment"
            android_layout_weight="1" />
    </LinearLayout>

</LinearLayout>

</android.support.v7.widget.CardView>

ViewAppointment.XML

<android.support.v7.widget.RecyclerView
    android_id="@+id/recycle"
    android_layout_width="match_parent"
    android_layout_height="380dp"
    android_layout_alignParentTop="true"
    android_layout_alignParentStart="true"
    android_layout_marginTop="21dp">

</android.support.v7.widget.RecyclerView>

2 ответа

  1. Я думаю, твоя проблема в AppointmentDataклассе. Вы назвали все переменные-члены в нижнем регистре, который не совсем соответствует имени ключа в вашей базе данных (потому что первая буква каждого имени ключа находится в верхнем регистре). Поэтому убедитесь, что имя ключа и переменные-члены AppointmentDataкласса совпадают.

  2. Я делаю небольшое наблюдение о вашей проблеме, и это кажется просто маленькой ошибкой. Я имею в виду этот пост:

    https://stackoverflow.com/a/34883389/4088357

    Мы создадим класс Java, который представляет запись в блоге. Как и в прошлый раз, мы должны убедиться, что наши имена полей совпадают с именами свойств в базе данных Firebase и дать классу конструктор по умолчанию без параметров.

    Таким образом, можно изменить код при сохранении значений в базе данных Firebase:

    //Adding values
    db.child("name").setValue(name);
    db.child("address").setValue(address);
    db.child("tel").setValue(tel);
    db.child("date").setValue(date);
    db.child("time").setValue(time);