2016-07-25 3 views
4

Я пытаюсь извлечь данные из firebase и отобразить их в своем списке, используя firebase-ui. Код работает нормально, но в представлении списка ничего не отображается. Это то, что я получаю от моих журналов:Нет настройки/поля при попытке заполнить список просмотров на firebase

W/ClassMapper: Нет сеттер/поле для -KNRXdDOlA9nV6qxXvOl не найдено на классе com.example.sammie.coreteccontacts.Sacco

Вот мой FirebaselistAdapter

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference(); 
FirebaseListAdapter<Sacco> adapter = new FirebaseListAdapter<Sacco>(getActivity(), Sacco.class, android.R.layout.simple_list_item_1, mDatabaseReference) { 
@Override 
protected void populateView(View view, Sacco sacco, int i) { 
((TextView)view.findViewById(android.R.id.text1)).setText(Sacco.getName()); 
} 
}; 
contactList.setAdapter(adapter); 

Вот мой Сакко класс:

package com.example.sammie.coreteccontacts; 

public class Sacco { 

    String description; 
    String location; 
    static String name; 

    public Sacco() { 
    } 

    public Sacco(String description, String location, String name) { 
     this.name = name; 
     this.description = description; 
     this.location = location; 
    } 

    public static String getName() { 
     return name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public String getLocation() { 
     return location; 
    } 
} 

Вот образец данных из firebase

KNRWnG6BTkbGJQJVq9Qaddclose

описание: "описание тест"

место: "тест расположение"

название: "название теста"

+1

вам нужно добавить сеттеры для каждой переменной внутри класса 'Sacco'. например 'public void setDescription (описание строки) {this.description = description; } '. Кроме того, если 'имя' уникально для объекта, вы, вероятно, не хотите, чтобы оно было' static' – wanpanman

+0

Я добавил сеттеры, но все равно получаю ту же ошибку –

ответ

6

Там в вашем классе нет методов setter.

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

public void setDescription(String description) { 
    this.description = description; 
} 

public void setLocation(String location) { 
    this.location = location; 
} 

НО

-KNRWnG6BTkbGJQJVq9Qaddclose

Это уникальный ключ, который должен быть получен в качестве объекта, содержащего ваше описание, расположение и имя.

W/ClassMapper: Нет сеттер/поле для -KNRXdDOlA9nV6qxXvOl не найдено на классе com.example.sammie.coreteccontacts.Sacco

Это показывает, что есть ошибка с позиционированием вашей базы данных слушателя. Он читает -KNRWnG6BTkbGJQJVq9Qaddclose как переменную для вашего класса Sacco вместо объекта.

Пожалуйста, проверьте файл JSON и DatabaseReference. Скорее всего, это должно быть так:

  • UnderChilds < ----- (НА РЕБЕНКА Listener).
    • -KNRWnG6BTkbGJQJVq9Qaddclose
    • -KNRWnSYnuojkbGJQJVq9Qaddclos
+0

Позвольте мне попробовать, я вернусь к вам –

+0

Я понял Я вызывал метод getName() в классе Sacco, поэтому я изменил его, чтобы вызвать getName() для объекта sacco '((TextView) view.findViewById (android.R.id.text1)). SetText (sacco. getName()); ' Я добавил методы настройки к классу Sacco, а затем изменил переменную имени на нестационарную Но я все равно получаю ту же ошибку Как это реализовать? ' Это показывает, что в вашей базе данных есть ошибка слушателя. Он читает -KNRWnG6BTkbGJQJVq9Qaddclose как переменную для вашего класса Sacco вместо объекта. ' –

+0

Где вы добавляете слушателя базы данных, на каком узле? Кроме того, пожалуйста, покажите структуру JSON, например, –

0

Вы должны получить ссылку на ваш узел:. DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance() getReference().child («Ваше имя узла»);