I haven't done this myself, but I think this approach would work.
First you need to know which views are attached/visible. A hierarchy change listener could do this, or a custom view that shims your item views. Anyway, when you are near to an end of the adapter you simply start laying track in of you; remove items from the other end of the adapter and add them to the this end, calling notifyRangeInserted and notifyRangeRemoved as you do this. The removed and inserted views should be outside of the displayed area so no animations will take place, though for GridLayoutManager you will need to work in multiples of the number of columns.
You will have to think about what to do when there isn't enough content to fill the recycler view. You'll also probably want to be at least a few items ahead of the recycler view as it scrolls, you might have to add duplicates to do this. I would prefer to move at least one screen of content ahead at a time.
I imagine the scroll indicator will bug out. A custom layout manager could give a pretty good indicator.