Q: Not calling notifyDataSetChanged() but data changing anyway? Lifecycle of RecyclerView and Adapter? So my problem seem to be the opposite of everything else that I've come across around here.
I have the following piece of code:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    MyAdapter adapter = new MyAdapter(this);
    recyclerView.setAdapter(adapter);
    adapter.buildModels();

So I first set the adapter to the Recycler view, and then I build the models. There is, therefore, a brief moment in time where getItemCount() in the adapter is 0. 
I never call notifyDataSetChanged() anywhere, but after calling buildModels() the adapter starts displaying the models. I've seen a couple of observers going on in the source code of RecyclerView.
To try to test how this works, I also added a method "adapter.addOneMoreItem()" right after adapter.buildModels(), and the adapter also knows how to display the new item.
So question: when exactly is notifyDataSetChanged() needed? What's the use case?
Anyone knows the exact lifecycle of the RecyclerView and Adapter?
Comments:
MyAdapter is a regular Adapter ->
public class MyAdapter extends RecyclerView.Adapter< RecyclerView.ViewHolder > {}

A: RecyclerView.Adapter can be "observed" by other classes. When you'call RecyclerView.setAdapter(), it's calls registerAdapterDataObserver() of adapter. So, adapter knows that you entered new data.
Here is the source code or RecyclerView: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
