2016-07-09 4 views
3

Я получаю эти ошибки, когда я пытался заполнить представление списка с firebase адаптером с помощью firebase UIPopulate ListView с Firebase адаптером

com.google.firebase.database.DatabaseException: Не удалось преобразовать значение введите в строку java.util.HashMap com.google.firebase.database.DatabaseException: класс java.util.HashMap имеет общие параметры типа, пожалуйста, используйте GenericTypeIndicator вместо

Вот код

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
    DatabaseReference a = ref.child("info"); 

     final FirebaseListAdapter<String> adapter = 
       new FirebaseListAdapter<String>(this,String.class,android.R.layout.simple_list_item_1,a) { 
        @Override 
        protected void populateView(View v, String model, int position) { 

         TextView text = (TextView) findViewById(android.R.id.text1); 
         text.setText(model); 

        } 

вот пример данных JSon

"info" : { 
    "KSTUJILdwPN305Fs7ujhga4knlG3" : { 
    "File Info" : { 
     "-JFRkA855rfOU7GtcK4" : { 
     "Name" : "John", 
     "Adress" : "Test Adress", 
     "Favourite_food" : "Bread", 
     }, 
+0

Можете ли вы показать небольшой пример JSON (как текст, нет скриншот, пожалуйста) в местоположении 'a'? Вы можете получить это, экспортировав его из консоли базы данных Firebase. –

+0

ok Я обновил вопрос на примере json-данных –

ответ

4

информация узел не относится к вашей модели данных. Он может содержать дочерние узлы. Таким образом, чтобы достичь модели, вы должны использовать такую ​​ссылку.

DatabaseReference a = ref.child("info").child(info_id).child("File Info").child(file_id); 

и вы должны иметь модель FileInfo вместо струнной модели для использования в

populateView(View v, FileInfo model, int position): 

и модель

public class FileInfo { 

private String Name; 
private String Adress; 
private String Favourite_food; 

public FileInfo() { 
} 

public FileInfo(String Name, String Adress, String Favourite_food) { 
    this.Name = Name; 
    this.Adress = Adress; 
    this.Favourite_food = Favourite_food; 
} 

public String getName() { 
    return Name; 
} 

public void setName(String Name) { 
    this.Name = Name; 
} 

public String getAdress() { 
    return Adress; 
} 

public void setAdress(String Adress) { 
    this.Adress = Adress; 
} 

public String getFavourite_food() { 
    return Favourite_food; 
} 

public void setFavourite_food(String Favourite_food) { 
    this.Favourite_food = Favourite_food; 
} 

} 
+0

спасибо. работает –

0
final FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this,String.class,android.R.layout.simple_list_item_1,a) 

public FirebaseListAdapter(Activity activity, 
       java.lang.Class<T> modelClass, 
       int modelLayout, 
       com.firebase.client.Firebase ref) 

modelClass - Firebase будет маршалом данные на месте в экземпляре класса, который вы предоставляете

замените второй параметр конструктора (String.class) POJO с полями из info (name, addres s, favouriteFood)

FirebaseListAdapter

Edit:

Вы также должны использовать добытчик в методе populateView

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