-2

Моя база данных выглядит следующим образом:Извлечение данных из Firebase в Android

Firebase Databse

код моей деятельности это:

public class FirebaseActivity extends AppCompatActivity { 

    ListView lv; 

    private FirebaseDatabase database; 
    private DatabaseReference myRef; 


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

     final List<String> glocations = new ArrayList<String>(); 

     lv = (ListView) findViewById(R.id.lv); 

     database = FirebaseDatabase.getInstance(); 
     myRef = database.getReference(); 
     myRef.child("Users").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Iterable<DataSnapshot> children = dataSnapshot.getChildren(); 

       for (DataSnapshot child: children){ 
        String data = child.getValue(String.class); 
        glocations.add(data); 

       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,glocations); 

     lv.setAdapter(adapter); 
    } 
} 

Теперь всякий раз, когда я пытаюсь открыть свою деятельность с настройками в главном действии, которое мое приложение вылетает. Все, что я хочу сделать, это показать Локатор, долготу и временные метки каждый раз, когда пользователь меняет их в списке, используя простой список с адаптером массива. Это другая деятельность, а не основная. Основной работает отлично. Я смотрел бесчисленные видеоролики, и я не могу понять свою ошибку.

Ошибка я получаю от LogCat это

FATAL EXCEPTION: main Process: com.thanoszoug.geofenceexample, PID: 9954 com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String at com.google.android.gms.internal.zzbqi.zzaD(Unknown Source) at com.google.android.gms.internal.zzbqi.zzb(Unknown Source) at com.google.android.gms.internal.zzbqi.zza(Unknown Source) at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) at com.thanoszoug.geofenceexample.FirebaseActivity$1.onDataChange(FirebaseActivity.java:42) at com.google.android.gms.internal.zzbmz.zza(Unknown Source) at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source) at com.google.android.gms.internal.zzboc$1.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

+0

Если ваше приложение выходит из строя, logcat будет содержать трассировку стека исключения. Пожалуйста, добавьте это в свой вопрос, чтобы улучшить свои шансы получить помощь. –

+0

Выполнено, спасибо за это. –

ответ

1

Я считаю, что исключение в этой строке:

String data = child.getValue(String.class); 

ПолучитьЗначение поможет вам узел «Anonymous», и все в остальные данные ниже него, в форме HashMap. Так как вы пытаетесь разобрать его String, он бросает вам эту ошибку:

Failed to convert value of type java.util.HashMap to String

Причина для получения уровня узла «Anonymous» является то, что вы изначально указать свой слушатель в «Пользователи», и вы запустите через своих детей, используя цикл foreach, и ценность каждого ребенка находится на уровне «Аноним».

Я рекомендую вам пересмотреть использование String, и, кроме того, если вы хотите получить данные о своих местоположениях, вы должны связаться с ним по адресу .child("Anonymous").child("Location").child("-KcU....") по своему собственному способу работы.

+0

Я сделал это. Моя проблема в том, что я использую уникальные ключи с .push() в основном действии, но я хочу показать список своей базы данных в другом действии. это способ получить эти ключи с помощью .child («Anonymous»). child («Location»). child («- KcU ....»)? –

Смежные вопросы