我正在尝试遍历 Firebase 中的节点,以检索节点中所有用户的特定字段,而不管登录的用户 ID 如何。
-Geo_code
-9rsgncjadHFssH
ChemistName:"Rayan"
Geo_codes: "25.42,0.1426"
-yUIoobF5gfhvGFG
ChemistName: "Mugash"
Geo_codes: "28.42,0.1426"
-JgHF6Yj7feNNGKGBH
ChemistName: "Stephany"
Geo_codes: "30.42,1.1426"
locate1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Query query = FirebaseDatabase.getInstance().getReference().child("Geocode");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ArrayList<String> code = new ArrayList<>();
ArrayList<Float> distances = new ArrayList<Float>();
String str[];
float distanceInMeters = 0;
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
String coordinates = snapshot.child("Geo_codes").getValue().toString();
code = new ArrayList<>();
code.add(coordinates);
Log.d(TAG, "All coordinates are" + code);
}
我希望在代码 ArrayList 中包含所有Geo_codes节点值
所以
我不知道你用什么geo_codes,我只是用了一个字符串,但这里是pojo
public class Geo_Code {
public String ChemistName;
public String Geo_Codes;
public Geo_Code(){
}
public Geo_Code(String chemistName, String geo_Codes) {
ChemistName = chemistName;
Geo_Codes = geo_Codes;
}
}
这是获取所有化学家名称和Geo_Code的代码。如果您仍然遇到问题,请随时提出任何问题。
public class MainActivity extends AppCompatActivity {
public List<Geo_Code> geo_codes = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Setting the data with our Pojo class
//Geo_Code s = new Geo_Code("Rayan","25.42,0.1426");
//FirebaseDatabase.getInstance().getReference("Geo_Code").setValue(s);
FirebaseDatabase.getInstance().getReference("Geo_Code").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//Get our snapshot and add it to a list of Geo_Code
Geo_Code geo_code = dataSnapshot.getValue(Geo_Code.class);
geo_codes.add(geo_code);
//Looping through geo_codes and getting all the data.
for(int i=0; i<geo_codes.size(); i++) {
String name = geo_codes.get(i).ChemistName;
String cordinates = geo_codes.get(i).Geo_Codes;
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
}
}
Create a Geo_Code pojo class then add a List<Geo_Code>geo_codeList() = new ArrayList();
in your activity. onDataChange Geo_Code geo_code = datasnapshot.getValue(Geo_Code.class); geo_codeList.add(geo_code);
for(int i=0; i<geo_codeList.size(); i++){
String cordinates = geo_codeList.get(i);
}