Java 如何根据指定的条件从数据库列表中检索项

Java 如何根据指定的条件从数据库列表中检索项,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在开发一个android账单管理应用程序,并希望将一些指定的数据检索到android listview 我使用valueEventListener执行此任务,但仍然无法检索数据。如何使用valueEventListener将这些数据获取到listview XML 您需要执行以下操作: cebDb = FirebaseDatabase.getInstance(); dbRef = cebDb.getReference("clients"); dmyRef.addValueEventList

我正在开发一个android账单管理应用程序,并希望将一些指定的数据检索到android listview

我使用valueEventListener执行此任务,但仍然无法检索数据。如何使用valueEventListener将这些数据获取到listview

XML



您需要执行以下操作:

cebDb = FirebaseDatabase.getInstance();
dbRef = cebDb.getReference("clients");

dmyRef.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
    if(dataSnapshot.exists()){
      for(DataSnapshot ds : dataSnapshot.getChildren()){
         String address = ds.child("clientAddress").getValue(String.class);
       }
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {

   }
});

您需要附加
ValueEventListener
,然后在直接子节点中迭代,以便能够检索客户端地址。

小节点:我更喜欢
.getValue(String.class)
而不是
.getValue().toString()
as:1)如果属性不存在,后者将抛出
NullPointerException
,2)如果属性存在,前者将抛出异常,但类型不同。Lol@FrankvanPuffelen你总是告诉我这个注释,我总是忘记更改它。现在换了,谢谢!
package com.ceb.meterreaderassistant;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;



import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;


import java.util.ArrayList;

public class SubmitReading extends AppCompatActivity {

    private ListView listView;
    private FirebaseDatabase cebDb;
    private DatabaseReference dbRef;


    private ArrayList<String>  arrayList = new ArrayList<>();

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

        cebDb = FirebaseDatabase.getInstance();
        dbRef = cebDb.getReference("clients");

        listView = (ListView)findViewById(R.id.list_address);
        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
        listView.setAdapter(arrayAdapter);


    }
}
cebDb = FirebaseDatabase.getInstance();
dbRef = cebDb.getReference("clients");

dmyRef.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
    if(dataSnapshot.exists()){
      for(DataSnapshot ds : dataSnapshot.getChildren()){
         String address = ds.child("clientAddress").getValue(String.class);
       }
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {

   }
});