如何在Firebase中检索所有子数据并以xml布局显示

时间:2017-12-14 09:20:17

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

我正在使用Firebase创建一个应用,用户可以在其中添加数据并直接从Firebase Database显示数据。数据插入成功,在插入每个值后,它在数据库中看起来像这样。

这是我的数据库的图片:

enter image description here

我想检索Student中的所有数据(例如studentName& studentPhoneNumber)并显示在.xml布局文件中。由于我在代码中使用legacy SDK,因此我不知道如何使用DatabaseReference

   ShowButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            firebase.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot snapshot) {

                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                        Student student = postSnapshot.getValue(Student.class);

                        String ShowDataString =ShowDataTextView.getText()+ "Name : "+student.getStudentName()+"\nPhone Number : "+student.getStudentPhoneNumber()+"\n\n";

                        ShowDataTextView.setText(ShowDataString);
                    }
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    System.out.println("Data Access Failed" + firebaseError.getMessage());
                }
            });

        }
    });

我的Student.class看起来像这样:

public class Student {

    private String name;
    private String phoneNumber;

    public Student() {

    }

    public String getStudentName() {
        return name;
    }

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

    public String getStudentPhoneNumber() {
        return phoneNumber;
    }

    public void setStudentPhoneNumber(String phonenumber) {
        this.phoneNumber = phonenumber;
    }

}

2 个答案:

答案 0 :(得分:2)

带学生arrayList并将学生数据添加到列表中。

FirebaseAuth mFirebaseAuthInstance = FirebaseAuth.getInstance();
        FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
        FirebaseUser mFirebaseCurrentUser = mFirebaseAuthInstance.getCurrentUser();
        DatabaseReference mDatabaseRef = mFirebaseDatabase.getReference("User").child(mFirebaseCurrentUser.getUid()).child("Student");
        mDatabaseRef.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot snapshot) {

                ArrayList<Student> studentList=new ArrayList<Student>();
                for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                    Student student = postSnapshot.getValue(Student.class);
                    studentList.add(student);
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {
                System.out.println("Data Access Failed" + firebaseError.getMessage());
            }
        });

使用RecylerView将数据加载到xml,请参阅以下链接以使用RecylerView

  

更多reference

答案 1 :(得分:0)

试试这个

public class FethingDatas extends AppCompatActivity {


    RecyclerView ry_fetchdata;

    Firebase firebase;

    ArrayList<Pojo_Recylerview> arrayList = new ArrayList<>();

    Pojo_Recylerview pojo_recylerview_obj;

    Display_Adapter display_adapter;

    private RecyclerView.LayoutManager layoutManager;

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

        ry_fetchdata = findViewById(R.id.ry_fetchdata);


        firebase = new Firebase("https://fir-project-87eac.firebaseio.com/").child("Userdata");

        layoutManager = new LinearLayoutManager(this);
        ry_fetchdata.setLayoutManager(layoutManager);
        ry_fetchdata.setItemAnimator(new DefaultItemAnimator());
        display_adapter = new Display_Adapter(this,arrayList);
        ry_fetchdata.setAdapter(display_adapter);

        firebase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {


                if (dataSnapshot.exists())
                {

                    arrayList.clear();

                    for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
                    {

                        String subject= (String) dataSnapshot1.child("subject").getValue();
                        String username = (String) dataSnapshot1.child("username").getValue();

                        pojo_recylerview_obj = new Pojo_Recylerview();

                        Log.d("subject","username"+subject +" "+username);

                        pojo_recylerview_obj.setSubject(subject);
                        pojo_recylerview_obj.setUsername(username);

                        arrayList.add(pojo_recylerview_obj);

                    }

                    display_adapter.notifyDataSetChanged();

                }else
                {
                    Toast.makeText(FethingDatas.this,"No More Data Found",Toast.LENGTH_LONG).show();
                }

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

    }
}