尝试从字段int读取失败

时间:2018-03-19 13:31:52

标签: java android

这是我的班级

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));

虽然出现了另一个我不想要的错误。一些在这里 感谢

1 个答案:

答案 0 :(得分:0)

问题是,当你致电holder.getFeedItem()时,它会返回null pointer。原因如下:

class PostViewHolder extends RecyclerView.ViewHolder {
  FeedItem feedItem;
  FeedItem getFeedItem() {
        return feedItem;
    },

你可以看到没有构造函数来设置这个字段甚至是简单的setter。

要修复它,您可以创建一个简单的构造函数,它将以不同的方式设置该字段或获取Feed项。