У меня есть две кнопки (Добавить контакт) и (Очистить все контакты) , каждый раз, когда я заполняю информацию о контакте (имя, телефон, изображение), я сохраняю их, используя SharedPreference
, поэтому, если я закрою приложение и снова открою его, элементы должны появиться, но в моем коде ниже, всякий раз, когда я пытаюсь добавить или удалить контакт, ничего не происходит, я должен закрыть приложение и открыть его снова, чтобы обновить RecylerView
.
MainActivity
contactAdapter = new ContactAdapter(getApplicationContext(), getExistedContactList(), new onRecyclerViewClickListener() {
@Override
public void onClick(View view, Contact contact) {
Toast.makeText(MainActivity.this, contact.getFullName(), Toast.LENGTH_SHORT).show();
}
});
recyclerView.setAdapter(contactAdapter);
Добавить контакт
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Contact contact = new Contact();
contact.setFullName(fullName.getText().toString());
contact.setPhoneNumber(phoneNumber.getText().toString());
contact.setContactProfilePictureURI(contactPictureUri.toString());
contacts.add(contact);
addToDB(fullName.getText().toString(), phoneNumber.getText().toString(), contactPictureUri.toString()); /*Add to database*/
recyclerView.setAdapter(contactAdapter);
contactAdapter.updateContactList(); /* Refresh/Update UI */
addContactDialog.dismiss(); /* dismiss Contact Dialog */
}
});
Удалить все контакты
private void removeAllContact() {
contacts.clear();
tinydb.clear();
contactAdapter.notifyDataSetChanged();/* Update UI */
}
Сохранение данных с использованием SharedPreference
void addToDB(String fullName, String number, String uri) {
tinydb = new TinyDB(getApplicationContext());
ArrayList<Contact> postObjects = tinydb.getListObject("CONTACT_KEY", Contact.class);
ArrayList<Contact> arrayList = new ArrayList<>();
for (Object objs : postObjects) {
arrayList.add((Contact) objs);
}
Contact mContact = new Contact();
mContact.setFullName(fullName);
mContact.setPhoneNumber(number);
mContact.setContactProfilePictureURI(uri);
arrayList.add(mContact);
tinydb.putListObject("CONTACT_KEY", arrayList);
}
private List<Contact> getExistedContactList() {
tinydb = new TinyDB(getApplicationContext());
ArrayList<Contact> arrayList;
arrayList = tinydb.getListObject("CONTACT_KEY", Contact.class);
if (arrayList.size() == 0)
return contacts;
else
return arrayList;
}