Firebase查询Android
我试图用特定的报纸id查询新闻节点中的最后一项。基本上,我希望总是使用新闻id作为查询来获取特定报纸的最后一条新闻。查询是在FirebaseRecyclerAddter populateViewHolder()中完成的,我得到 java.lang.ArrayIndexOutOfBoundsException:长度=0;索引=-1 获取(ArrayList.java:310) 在com.simpumind.e_tech_news.adapter.VendorNewAdapter$1.onDataChange(VendorNewAdapter.java:100) 这就是我所尝试的Firebase查询Android,android,firebase,firebase-realtime-database,firebaseui,Android,Firebase,Firebase Realtime Database,Firebaseui,我试图用特定的报纸id查询新闻节点中的最后一项。基本上,我希望总是使用新闻id作为查询来获取特定报纸的最后一条新闻。查询是在FirebaseRecyclerAddter populateViewHolder()中完成的,我得到 java.lang.ArrayIndexOutOfBoundsException:长度=0;索引=-1 获取(ArrayList.java:310) 在com.simpumind.e_tech_news.adapter.VendorNewAdapter$1.onDataC
@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 void onDataChange(DataSnapshot dataSnapshot) {
...
if (newsList.size() > 0) {
News news = newsList.get(newsList.size() - 1);
updateUI(viewHolder, news);
}
}
希望这有帮助
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;
}
}
public void onDataChange(DataSnapshot dataSnapshot) {
...
if (newsList.size() > 0) {
News news = newsList.get(newsList.size() - 1);
updateUI(viewHolder, news);
}
}