Android Firebase странное сопоставление данных

#android #arraylist #firebase #firebase-realtime-database

#Android #arraylist #firebase #firebase-база данных в реальном времени

Вопрос:

Я получаю эту ошибку из режима отладки, и я не знаю, почему это происходит, поскольку все должно быть в порядке. Некоторые данные не равны нулю, некоторые данные равны нулю, кто-нибудь знает, почему это происходит?

введите описание изображения здесь

Вот мой код Firebase:

  mDatabase = FirebaseDatabase.getInstance();

    mReference = mDatabase.getReferenceFromUrl("https://basketball-training-app.firebaseio.com/article");

    mReference.addValueEventListener(new ValueEventListener() {

  @Override
   public void onDataChange(DataSnapshot dataSnapshot) {

    articleModel = new ArrayList<>();
    for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {

        articleModel.add(postSnapshot.getValue(ArticleModel.class));
    }



    adapter = new ArticleAdapter(getActivity().getApplicationContext(), R.layout.fragment_article_list_items, articleModel);

    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
        Intent intent = new Intent(getActivity(), ArticleDetailsActivity.class);
        final String postKey = mReference.getKey();
        intent.putExtra("post_key", postKey);
        getActivity().startActivity(intent);

    }
});
  }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
  

Вот мои данные из Firebase:

 [ {
"body" : "Becoming a professional basketball player take ",
"id" : "2",
"photo" : "http://img.aws.livestrongcdn.com/ls-article-image-640/cme/cme_public_images/www_livestrong_com/photos.demandstudios.com/getty/article/108/235/489314780_XS.jpg",
"published_date" : "2016-09-19",
"thumb" : "http://img.aws.livestrongcdn.com/ls-article-image-640/cme/cme_public_images/www_livestrong_com/photos.demandstudios.com/getty/article/108/235/489314780_XS.jpg",
"title" : "What Training Is Necessary to Become a Professional Basketball Player?",
"video" : ""
}, {
"body" : "It's basketball; these are the best movies of",
"id" : "0",
"photo" : "http://images.contentful.com/7h71s48744nc/1w3KueQHLi2G0oyguoScQE/74af0a5222728503eff818ddcea6865e/coach-carter.jpg",
"published_date" : "2016-09-19",
"thumb" : "http://ecx.images-amazon.com/images/I/51FYWuWGPLL._SL160_.jpg",
"title" : "Top Ten Greatest Basketball Movies",
"video" : ""
 }, {
"body" : "Basketball is a very popular sport played all around the ",
 "id" : "1",
 "photo" : "http://mba.org.mt/wp-content/uploads/2015/12/basketball-wallpaper-1280x768-1180x768.jpg",
 "published_date" : "2016-09-19",
 "thumb" : "http://mba.org.mt/wp-content/uploads/2015/12/basketball-wallpaper-1280x768-1180x768.jpg",
  "title" : "Popularity of Basketball Around the World",
 "video" : ""
 } ]
  

И вот модель:

  @PropertyName("thumb")
private String thumb;

@PropertyName("title")
private String title;

@PropertyName("published_date")
private String published_date;

@PropertyName("photo")
private String photo;

@PropertyName("body")
private String body;

@PropertyName("id")
private String id;

@PropertyName("video")
private String video;

public ArticleModel() {
}

public ArticleModel(String id, String title, String thumb, String published_date, String photo, String body, String video) {
    this.id = id;
    this.title = title;
    this.thumb = thumb;
    this.published_date = published_date;
    this.photo = photo;
    this.body = body;
    this.video = video;
}



public String getBody() {
    return body;
}

public void setBody(String body) {
    this.body = body;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getThumb() {
    return thumb;
}

public void setThumb(String thumb) {
    this.thumb = thumb;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getData() {
    return published_date;
}

public void setData(String published_date) {
    this.published_date = published_date;
}

public String getImage() {
    return photo;
}

public void setImage(String photo) {
    this.photo = photo;
}

public String getVideoURI() {
    return video;
}

public void setVideoURI(String video) {
    this.video = video;
}
  

Ответ №1:

Имя методов setter и getter должно совпадать с именем свойства.

Добавьте или измените методы получения и установки для photo и published_date для

 public void setPhoto(String photo) {
    this.photo = photo;
}

public String getPhoto() {
    return photo;
}

public void setPublished_date(String published_date) {
    this.published_date = published_date;
}

public String getPublished_date() {
    return published_date;
}
  

Комментарии:

1. Странно, так как в asynctask это не вызовет проблем… Большое вам спасибо!

2. @TomasMaksimavicius вам не нужно использовать asynctask, ValueEventListener уже выполняется в отдельном потоке. 🙂