2. Получение контакта и настройка RecyclerView

Перейдем к реализации списка контактов.

Для начала нам необходимо создать класс, который будет описывать один контакт из списка. Это будет простой класс с 4 полями, конструктором, а также геттерам и сеттерами.

Contact.java
public class Contact {

    private String name;
    private String email;
    private String phone;
    private Uri uri;

    public Contact(String name, String email, String phone, Uri uri) {
        this.name = name;
        this.email = email;
        this.phone = phone;
        this.uri = uri;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Uri getUri() {
        return uri;
    }

    public void setUri(Uri uri) {
        this.uri = uri;
    }
}

Для хранения списка контактов, в рамках простого тестового приложения, мы будем использовать обычный список из объектов класса Contact.

MainActivity.java
public class MainActivity extends AppCompatActivity {

    private static final int ADD_CONTACT_REQUEST_CODE = 5556;
    private RecyclerView mRecyclerView;
    private FloatingActionButton mAddContactButton;

    private List<Contact> list = new ArrayList<>();

    ...

}

Для начала, переопределим метод onActivityResult(), который позволит нам обработать результат окна AddContactActivity. При получении результата, мы просто создаем новый объект типа Contact с помощью полученных данных и добавляем объект в коллекцию с контактами.

MainActivity.java
public class MainActivity extends AppCompatActivity {

    private static final int ADD_CONTACT_REQUEST_CODE = 5556;
    private RecyclerView mRecyclerView;
    private FloatingActionButton mAddContactButton;

    private List<Contact> list = new ArrayList<>();

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent 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(new Contact(name, email, phone, uri));
        }
    }
    
    ...
    
}

Теперь займемся списковым элементом RecyclerView. Добавим LayoutManager, создадим объект адаптера и добавим объект адаптера в RecyclerView. Класс адаптера будет называться ContactsAdapter и будет иметь изначально иметь конструктор с двумя параметрами - объектом контекста и списком контактов. В дальнейшем будет добавлен еще один аргумент - ссылка на объект MainActivity для реализации функционала удаления контакта.

MainActivity.java
public class MainActivity extends AppCompatActivity {

    private static final int ADD_CONTACT_REQUEST_CODE = 5556;
    private RecyclerView mRecyclerView;
    private FloatingActionButton mAddContactButton;

    private List<Contact> list = new ArrayList<>();
    private ContactsAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        ...

        mRecyclerView = findViewById(R.id.list);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ContactsAdapter(getApplicationContext(), list);
        mRecyclerView.setAdapter(adapter);
    }
    
    ...
    
}

Last updated