I will write not “how to”, but “how I usually do and what are the advantages”.
In the case of a search line and a list, it's really nice to track events by subscribing to them as Observable . I can not find where, but in some of the conferences saw a report on this approach. Here, only (yes, as in all Rx) we must not forget to unsubscribe. The method is also good because if you quickly change the text or drag the list up and down (often trigger the pagination event), you can use the excellent debounce() and the delays work as you need.
https://medium.com/@matdziu/using-rxjava-in-searchview-f1d1d5dcb8b7
Regarding the transfer of Observable between layers. Let there be some data source (some repository , which returns Observable to request data from the database or network). When a user navigates to a specific screen, View notifies the Presenter to load the data, Presenter asks the Observable for Interactor and subscribes to it. Interactor in turn, asks the Repository this Observable and, before returning it to the presenter, hangs various operators if necessary (filters, mappings, etc.). The point is that View only notified the Presenter about the event, and that one, if the data had time to be processed, and the user is still on this screen, will simply transfer them to the View .
If we have a search string or list, then the data source becomes View . If View itself throws Presenter Observable , this means that a dependency has appeared that is the opposite of the one described above. In my opinion - not an option. I would create an Observable for the search line or list and let Presenter decide when to subscribe and unsubscribe. That is, when changing a line or scrolling, you do not speak to presenter.onChanged(Observable) , but simply when creating a View , create an Observable for the necessary changes on the screen, and Presenter will subscribe / unsubscribe to events via the interface you provide.
If I understand correctly, then this approach is called reactive work with View . In this way, you can create Observable for any events on the screen (even by simply pressing a button), and Presenter will subscribe when it is necessary. At the same time, View does not manifest any initiative towards Presenter .
I will be glad to criticism from the guru of architecture in the comments.