Java 从Firebase数据库显示数据时获取项目名称

Java 从Firebase数据库显示数据时获取项目名称,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在显示Firebase实时数据库中的记录,当时我正在使用: ArrayList<String> list; ArrayAdapter<String> adapter; adapter = new ArrayAdapter<String>(this,R.layout.list_white_text,R.id.userInfo, list); list.add("Name :"+member.getName().toSt

我正在显示Firebase实时数据库中的记录,当时我正在使用:

     ArrayList<String> list;
     ArrayAdapter<String> adapter;
     adapter = new ArrayAdapter<String>(this,R.layout.list_white_text,R.id.userInfo, list);
     list.add("Name :"+member.getName().toString()+" Age :"+member.getAge().toString()+" Phone 
  :"+member.getPhone().toString()+"\n"+"------------------------"); 

我想显示数据,但它正在显示项目名称。

ArrayAdapter不了解如何显示“成员”对象。因此,为了显示数据,可以制作一个自定义数组适配器,或者将其转换为“String”对象

阵列适配器;
数组列表
...
列表=新的ArrayList();
adapter=new ArrayAdapter(这个,R.layout.list\u white\u text,R.id.userInfo,list);
...
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot dts:DataSnapshot.getChildren())
{
member=dts.getValue(member.class);
添加(member.getName()+…);
}
但现在显示时,我得到com.example.project名称

emulator中显示的这两项不是“项目名称”,这些字符是创建时内存中存在的对象的地址。当您创建
列表
对象并将其传递给适配器时,适配器尝试调用
toString()
在所有这些对象上。由于您在
成员
类中没有重写该方法,因此会显示这些地址。有两种方法可以解决此问题

第一种方法是在
成员
类中重写
toString()
方法,方法是为它提供一个正确的实现:

@Override
public String toString() {
    return "Member{" +
            "memberId='" + memberId+ '\'' +
            '}';
}
这样,您就告诉适配器显示
memberId
的值,而不是每个对象在内存中的地址

第二种解决方案是将适配器更改为字符串类型。这样,您应该传递一个
列表
,而不是
列表
,该列表应包含作为字符串值显示的数据。如果我们以上述属性为例,您应该创建一个成员ID列表。如果您需要该值对于另一个属性,则应创建名称或电话号码列表,或者可以在单个字符串中串联更多值

  ListView listView;
  FirebaseDatabase database;
  DatabaseReference ref;
 ArrayList<Member> list;
 ArrayAdapter<Member> adapter;
  Member member;
 Button btnDlt;
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_retreivedata);
    member = new Member();
   listView =(ListView)findViewById(R.id.listView);
    btnDlt = (Button) findViewById(R.id.btnDlt);
   database = FirebaseDatabase.getInstance();
   ref = database.getReference("Member");
   list = new ArrayList<Member>();
   adapter = new ArrayAdapter<Member>(this,R.layout.list_white_text,R.id.userInfo, list);
   ref.addValueEventListener(new ValueEventListener() {
       @Override
       public void onDataChange(DataSnapshot dataSnapshot) {
                     for(DataSnapshot dts: dataSnapshot.getChildren())
                     {
                         member = dts.getValue(Member.class);
        list.add(member); // here i want to do list.add(member.getName().toString()); but not allowed
           }
           listView.setAdapter(adapter);
       }

       @Override
       public void onCancelled(DatabaseError databaseError) {
       }
   });
public class Member implements Serializable {

private String memberId;
private String Name;
private String Age;
private String Phone;
private String Height;

public Member() {
}

public Member(String memberId, String name, String age, String phone, String height) {
    this.memberId = memberId;
    Name = name;
    Age = age;
    Phone = phone;
    Height = height;
}

public String getMemberId() {
    return memberId;
}

public void setMemberId(String memberId) {
    this.memberId = memberId;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getAge() {
    return Age;
}

public void setAge(String age) {
    Age = age;
}

public String getPhone() {
    return Phone;
}

public void setPhone(String phone) {
    Phone = phone;
}

public String getHeight() {
    return Height;
}

public void setHeight(String height) {
    Height = height;
}
}
ArrayAdapter<String> adapter;
ArrayList<String> list
...
   list = new ArrayList<String>();
   adapter = new ArrayAdapter<String>(this,R.layout.list_white_text,R.id.userInfo, list);
...
public void onDataChange(DataSnapshot dataSnapshot) {
     for(DataSnapshot dts: dataSnapshot.getChildren())
         {
            member = dts.getValue(Member.class);
            list.add(member.getName()+...);
}


@Override
public String toString() {
    return "Member{" +
            "memberId='" + memberId+ '\'' +
            '}';
}