Android – Attempt to invoke virtual method ‘boolean android.os.Handler.postDelayed(java.lang.Runnable, long)’ on a null object reference

androidandroid-recyclerviewandroid-studio

I was following this page Adding items to Endless Scroll RecyclerView with ProgressBar at bottom and I think I did everything right, but for some reason I get back on this line onLoadMoreListener.onLoadMore();

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.postDelayed(java.lang.Runnable, long)' on a null object reference

I know that there are a lot of posts regarding the null pointer error, but that line is in a if statement and it shouldn't be executed if it's null.

if (onLoadMoreListener != null) {
                        onLoadMoreListener.onLoadMore();
                    }

Why is this happening ? What code should I post to help figuring out the problem ?

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("tesssst@gmail.com");
                        myDataset.add(0,gridItem);
                        mAdapter.notifyItemInserted(myDataset.size());
                        mAdapter.setLoaded();
                    }
                }, 2000);
                System.out.println("load");
            }
        });

Best Answer

This error means handler is null.

Just initialize handler object before calling post method like this:

handler=new Handler();
Related Topic