TalkLittle :

This is a bug in the RecyclerView StaggeredGridLayoutManager:\n\nhttps://code.google.com/p/android/issues/detail?id=180521\n\nhttps://code.google.com/p/android/issues/detail?id=181461\n\nA workaround is to try/catch the exception:\n\ntry {\n ((StaggeredGridLayoutManager)getLayoutManager()).findFirstVisibleItemPositions(firstVisibleItemPositions);\n} catch (NullPointerException ex) {\n // workaround for RecyclerView bug. assume not laid out, so no items visible\n firstVisibleItemPositions[0] = RecyclerView.NO_POSITION;\n firstVisibleItemPositions[1] = RecyclerView.NO_POSITION;\n}\n",
2016-01-19T04:37:32
varotariya vajsi :

If you are using StaggeredGridLayoutManager you can find findLastVisibleItemPositions like below:\n\nint visibleThreshold =1;\nfinal StaggeredGridLayoutManager linearLayoutManager = (StaggeredGridLayoutManager) mRecyclerViewAllPost.getLayoutManager();\n mRecyclerViewAllPost.addOnScrollListener(new RecyclerView.OnScrollListener() {\n @Override\n public void onScrolled(RecyclerView recyclerView, int dx, int dy) {\n super.onScrolled(recyclerView, dx, dy);\n\n int[] lastVisibleItemPositions = linearLayoutManager.findLastVisibleItemPositions(null);\n int lastVisibleItem = getLastVisibleItem(lastVisibleItemPositions);\n int totalItemCount = linearLayoutManager.getItemCount();\n if (!isLoading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {\n print(\"load more item \");\n isLoading = true;\n }\n }\n });\n\n\nand getLastVisibleItem method as below:\n\npublic int getLastVisibleItem(int[] lastVisibleItemPositions) {\n int maxSize = 0;\n for (int i = 0; i < lastVisibleItemPositions.length; i++) {\n if (i == 0) {\n maxSize = lastVisibleItemPositions[i];\n }\n else if (lastVisibleItemPositions[i] > maxSize) {\n maxSize = lastVisibleItemPositions[i];\n }\n }\n return maxSize;\n}\n",
2017-08-19T07:19:51
zed007 :

I tested it with this code and it works fine with me \n\nint positionView = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();\n\n\nI used the recycle view parameter.",
2015-04-06T08:56:23
Ankit Aggarwal :

Try this:\n\nint position = layoutManager.findFirstVisibleItemPositions(null)[0];\n\n\nwhere layoutManager is what you set in your recyclerview.\n\nFor example,\n\nlayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);\nmrecyclerView.setLayoutManager(layoutManager );\n",
2015-04-09T04:43:44
smarteist :

Use these two methods :\n\n /**\n * @return Last visible item position for staggeredGridLayoutManager\n */\n private int getLastVisibleItem(int[] lastVisibleItemPositions) {\n int maxSize = 0;\n for (int position : lastVisibleItemPositions) {\n if (position > maxSize) {\n maxSize = position;\n }\n }\n return maxSize;\n }\n\n /**\n * @return First visible item position for staggeredGridLayoutManager\n */\n private int getFirstVisibleItem(int[] firstVisibleItemPositions) {\n int minSize = 0;\n if (firstVisibleItemPositions.length > 0) {\n minSize = firstVisibleItemPositions[0];\n for (int position : firstVisibleItemPositions) {\n if (position < minSize) {\n minSize = position;\n }\n }\n }\n return minSize;\n }\n\n\nand getLastVisibleItem method as below:\n\n int[] lastVisibleItemPositions = ((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(null);\n int[] firstVisibleItemPositions = ((StaggeredGridLayoutManager) layoutManager).findFirstVisibleItemPositions(null);\n // get maximum element within the list\n lastVisibleItem = getLastVisibleItem(lastVisibleItemPositions);\n firstVisibleItem = getFirstVisibleItem(firstVisibleItemPositions);\n",
2019-05-25T15:33:27
user3793358 :

You can use this : \n\nint[] firstVisibleItemPositions = new int[yourNumberOfColumns];\nint pastVisiblesItems = layoutManager.findFirstVisibleItemPositions(firstVisibleItem‌​Positions)[0];\n",
2016-11-26T19:12:55
yy