2017-11-30 1 views
0

내 안드로이드 앱에 문제가 있습니다. 파이어베이스에서 데이터 (위도와 경도)가있는 스피너가 있습니다. 상기 다른 옵션 스피너를 클릭하면 0 여기스피너 값이 자동으로 위치 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) { 

                 } 
                }); 

감사합니다 :)

답변

1


addValueEventListener() 대신 addListenerForSingleValueEvent()을 사용하십시오.
희망이 있으면 도움이됩니다.

+0

감사의 동생이되었습니다. – AkashK