Making Android events reactive
We have made our API calls reactive, but what about our events? Remember the ToDoAdapter
; we took a lambda, used it inside ToDoViewHolder
, and created and passed the lambda at TodoListActivity
. Quite messy. This should be reactive as well, shouldn't it? So, let's make the events reactive as well.
Subject
plays an awesome role in making events reactive. As Subject
is a great combination of Observable
and Observer
, we can use them as Observer
inside Adapter
and as Observable
inside Activity
, thus making passing events easy.
So, let's modify the ToDoAdapter
as follows:
class ToDoAdapter( private val context:Context, //(1) val onClickTodoSubject:Subject<Pair<View,ToDoModel?>>//(2) ):RecyclerView.Adapter<ToDoAdapter.ToDoViewHolder>() { private val inflater:LayoutInflater = LayoutInflater.from(context)//(3) private val todoList:ArrayList<ToDoModel> = arrayListOf()//(4) fun setDataset(list...