这是我的班级
public static class FeedItem {
public int likesCount;
public boolean isLiked;
public FeedItem(int likesCount, boolean isLiked) {
this.likesCount = likesCount;
this.isLiked = isLiked;
}
}
这是我使用FeedItem类
的另一个类class PostViewHolder extends RecyclerView.ViewHolder {
FeedItem feedItem;
FeedItem getFeedItem() {
return feedItem;
}
}
然后我在动画文件中使用它
FeedItemHolderInfo feedItemHolderInfo = (FeedItemHolderInfo) preInfo;
FeedAdapter.PostViewHolder holder = (FeedAdapter.PostViewHolder) newHolder;
animateHeartButton(holder);
updateLikesCounter(holder, holder.getFeedItem().likesCount);
现在在MainActivity中有一个方法可以更新arraylist
public void updateItems(boolean animated) {
feedItems.clear();
feedItems.addAll(Arrays.asList(
new FeedItem(33, false),
new FeedItem(1, false),
new FeedItem(223, false),
new FeedItem(2, false),
new FeedItem(6, false),
new FeedItem(8, false),
new FeedItem(99, false)
));
if (animated) {
notifyItemRangeInserted(0, feedItems.size());
} else {
notifyDataSetChanged();
}
}
但应用程序崩溃了
updateLikesCounter(holder, holder.getFeedItem().likesCount);
错误显示为
java.lang.NullPointerException:尝试从空对象引用上的字段'int com.example.alsongdunstan.thefaithapp.ui.adapter.FeedAdapter $ FeedItem.likesCount'中读取
在调用updateItems方法
之前,我甚至尝试从MainActivity初始化对象itemList.add(new FeedAdapter.FeedItem(124,false));
虽然出现了另一个我不想要的错误。一些在这里 感谢
答案 0 :(得分:0)
问题是,当你致电holder.getFeedItem()
时,它会返回null pointer
。原因如下:
class PostViewHolder extends RecyclerView.ViewHolder {
FeedItem feedItem;
FeedItem getFeedItem() {
return feedItem;
},
你可以看到没有构造函数来设置这个字段甚至是简单的setter。
要修复它,您可以创建一个简单的构造函数,它将以不同的方式设置该字段或获取Feed项。