Java 如何根据指定的条件从数据库列表中检索项
我正在开发一个android账单管理应用程序,并希望将一些指定的数据检索到android listview 我使用valueEventListener执行此任务,但仍然无法检索数据。如何使用valueEventListener将这些数据获取到listview XMLJava 如何根据指定的条件从数据库列表中检索项,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
您需要执行以下操作:
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) {
}
});