0
我試圖用特定的newspaper_id查詢新聞節點中的最後一項。基本上我想總是通過使用新聞的id作爲查詢來獲得特定報紙的最新消息。查詢是在FirebaseRecyclerAdpter populateViewHolder()內完成的,我得到Firebase查詢Android
java.lang.ArrayIndexOutOfBoundsException:length = 0;指數= -1 在java.util.ArrayList.get(ArrayList.java:310) 在com.simpumind.e_tech_news.adapter.VendorNewAdapter $ 1.onDataChange(VendorNewAdapter.java:100)
{
"news": {
"-HDRKDDGKSD56": {
"caption" : "Hail Mary",
"content" : "some contents"
"newspaper_id" : "-Kg9UvxyiuI4G3r6fCgU",
thumbnail: "some base64 encoded image"
},
"newspaper": {
"-Kg9UvxyiuI4G3r6fCgU" : {
"content_provider" : 1,
"cost" : "200",
"logo" : "some base64 encoded image"
"user": "The user"
}
}
這就是我試圖
@Override
protected void populateViewHolder(final NewsPaperHolder viewHolder, NewsPaper model, int position) {
viewHolder.vendorName.setText(model.getPaper_name());
mDatabaseRef = FirebaseDatabase.getInstance().getReference().child("news");
String oneChildRef = getRef(position).getKey();
mDatabaseRef.orderByChild("newspaper_id")
.equalTo(oneChildRef)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<News> newsList = new ArrayList();
for (DataSnapshot d : dataSnapshot.getChildren()){
News n = d.getValue(News.class);
newsList.add(n);
}
newsList.toString();
News news = newsList.get(newsList.size() - 1);
updateUI(viewHolder, news);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Picasso.with(context).load(model.getLogo()).into(viewHolder.vendorIcon);
}
public void updateUI(NewsPaperHolder holder, News news){
holder.firstNewsTitle.setText(news.getCaption());
Picasso.with(context).load(news.getThumbnail()).into(holder.firstNewsImage);
}
新聞
public class News {
public String caption;
public String content;
public String newspaper_id;
public String thumbnail;
public String user;
public News(){
}
public News(String caption, String content, String newspaper_id, String thumbnail, String user) {
this.caption = caption;
this.content = content;
this.newspaper_id = newspaper_id;
this.thumbnail = thumbnail;
this.user = user;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getNewspaper_id() {
return newspaper_id;
}
public void setNewspaper_id(String newspaper_id) {
this.newspaper_id = newspaper_id;
}
public String getThumbnail() {
return thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail;
}
}