我一直在跟踪此页面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)。

08-17 21:04