Реализуем метод onBindViewHolder(). Обратите внимание, что если список пуст, то мы сразу выходим из метода. Если не предусмотреть эту логику, то при пустом списке мы получим NullPointerException, потому что поля объекта holder будут равны null.
Последний штрих - обновление адаптера при добавлении нового контакта. Вернемся в класс MainActivity.java, в методе onActivityResult() добавим вызов метода адаптера notifyDataSetChanged().
MainActivity.java
publicclassMainActivityextendsAppCompatActivity {privatestaticfinalint ADD_CONTACT_REQUEST_CODE =5556;privateList<Contact> list =newArrayList<>();privateContactsAdapter adapter; @OverrideprotectedvoidonActivityResult(int requestCode,int resultCode, @NullableIntent data) { super.onActivityResult(requestCode, resultCode, data);if (requestCode == ADD_CONTACT_REQUEST_CODE && resultCode == RESULT_OK && data !=null) {String name =data.getStringExtra(Intent.EXTRA_USER);String email =data.getStringExtra(Intent.EXTRA_EMAIL);String phone =data.getStringExtra(Intent.EXTRA_PHONE_NUMBER);Uri uri =Uri.parse(data.getStringExtra(Intent.EXTRA_ORIGINATING_URI));list.add(newContact(name, email, phone, uri));adapter.notifyDataSetChanged(); } }}