我的 Android 应用程序遇到问题。我有一个微调器,它从 Firebase 获取数据(纬度和经度)。当单击另一个选项时,微调器会采用该值,但一段时间后它会自动更新到位置 0 并采用位置 0 的值。
这是我的代码..
databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot child : dataSnapshot.getChildren()) {
list.add(child.getKey());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MapsActivity.this, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
node = spinner.getSelectedItem().toString();
ref = FirebaseDatabase.getInstance().getReference(node);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
latitude = (double) dataSnapshot.child("latitude/location").getValue();
longitude = (double) dataSnapshot.child("longitude/location").getValue();
mapFragment.getMapAsync(MapsActivity.this);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
谢谢:)
最佳答案
使用addListenerForSingleValueEvent()
而不是addValueEventListener()
。
希望对您有帮助。
关于java - Spinner 值自动更新到位置 0,该位置从 firebase 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47573445/