我一直在跟踪此页面Adding items to Endless Scroll RecyclerView with ProgressBar at bottom,我认为我所做的一切都正确,但是由于某种原因,我回到了此行onLoadMoreListener.onLoadMore();
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.postDelayed(java.lang.Runnable, long)' on a null object reference
我知道有很多有关空指针错误的文章,但是该行在if语句中,如果为空则不应执行。
if (onLoadMoreListener != null) {
onLoadMoreListener.onLoadMore();
}
为什么会这样呢?我应该发布什么代码来帮助解决问题?
mAdapter.setOnLoadMoreListener(new MyAdapter.OnLoadMoreListener() {
@Override
public void onLoadMore() {
//add progress item
myDataset.add(null);
mAdapter.notifyItemInserted(myDataset.size() - 1);
handler.postDelayed(new Runnable() {
@Override
public void run() {
//remove progress item
myDataset.remove(myDataset.size() - 1);
mAdapter.notifyItemRemoved(myDataset.size());
MyRecyclerItems gridItem= new MyRecyclerItems();
gridItem.setAbout("Test");
gridItem.setEmail("[email protected]");
myDataset.add(0,gridItem);
mAdapter.notifyItemInserted(myDataset.size());
mAdapter.setLoaded();
}
}, 2000);
System.out.println("load");
}
});
最佳答案
正如您所指出的,基于if语句,onLoadMoreListener
字段不为null。但是,您没有包括的是正在onLoadMore()
方法内部执行的代码。
从部分堆栈跟踪中,您正在尝试在postDelayed(java.lang.Runnable, long)
方法内的Handler
上调用onLoadMore()
,并且说Handler
尚未初始化(为null)。