2017-02-20 13 views
0

я хочу, чтобы мое приложение (IOS & Android) для отображения некоторых новостей и эта лента новостей может быть в том числе текста & 1 изображение (быть дисплеем с точки зрения изображения) или текст и многократные изображения не указаны NO. (будет отображаться в gridview) в зависимости от свойства объекта.Как структурировать объект, чтобы получить вложенные FireBase данные

Я попытался реализовать эту функцию, как показано ниже, но это не сработало, и я надеюсь, что кто-то пройдет через эту проблему, я проверил много вопросов, но я думаю, что не соответствует моему делу.

ее моя firebase структура данных и мой объект для Android:

public class object { 

    String text; 
    String type; 
    List<images> images; 
    public object(){ 

    } 
    public String gettext(){return text;} 
    public String gettype(){return type;} 
    public List<images> getimages(){return images;} 
} 

class images{ 

    String images; 
    public images(){ 

    } 
public String getimages(){return images;} 

} 

и извлечения деятельности:

public class MainActivity extends AppCompatActivity { 
    DatabaseReference database; 
    List<object> objectsList = new ArrayList<>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     database = FirebaseDatabase.getInstance().getReference(); 
     loaddata(); 
    } 

    private void loaddata(){ 
     Query query = database.child("news"); 
     query.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       if (objectsList!=null){ 
        objectsList.clear(); 
       } 
       for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){ 
        object object = dataSnapshot1.getValue(object.class); 
        Log.i("&&&&&&& Images &&&&&",object.gettext()); 
        objectsList.add(object); 

       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       Log.e("%%%%%%%% ERROR ",databaseError.getMessage()); 
      } 
     }); 


    } 
} 

любые предложения были бы оценены

enter image description here

ответ

1

Try изменение images, как показано на рисунке b Elow.

public class object { 

    String text; 
    String type; 
    Map<String, String> images; 
    public object(){ 

    } 
    public String gettext(){return text;} 
    public String gettype(){return type;} 
    public Map<String,String> getimages(){return images;} 
} 
+0

ее не работает, нулевые объекты исключения –

+0

Просто заметили, что я не обновлял 'getimages' в этом коде ниже (сделал только сейчас) .... предположит, что вы, вероятно, сделали это изменение? Можете ли вы добавить полную ошибку, которую видите, –

+0

Ожидаемая карта при десериализации, но получила класс java.util.ArrayList при попытке получить моментальный снимок ... object object = dataSnapshot1.getValue (object.class); –