Files
SafeRoute3/app/src/main/java/com/example/saferoute/contacts/ContactActivity.java
T
2026-06-17 17:25:57 +03:00

160 lines
4.9 KiB
Java

package com.example.saferoute.contacts;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.example.saferoute.R;
import com.example.saferoute.SettingActivity;
import java.util.ArrayList;
import java.util.List;
public class ContactActivity extends AppCompatActivity {
private ListView listView;
private EditText inputName;
private EditText inputNumber;
private Button btnAdd;
private ContactAdapter adapter;
private List<Contact> contacts = new ArrayList<>();
private ContactStorage contactStorage;
// private SharedPreferences sharedPreferences;
// private Set<String> names = new HashSet<>();
// private String SAVED_NUMBERS = "SAVED_NUMBERS";
public void getBack2(View view){
Intent intent = new Intent(ContactActivity.this, SettingActivity.class);
startActivity(intent);
}
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
// Инициализация View
listView = findViewById(R.id.list_contact);
inputName = findViewById(R.id.name1);
inputNumber = findViewById(R.id.number1);
btnAdd = findViewById(R.id.add_contact);
contactStorage = new ContactStorage(this);
// Загружаем контакты из памяти
contacts = contactStorage.loadContacts();
// Если контактов нет, добавим тестовые
if (contacts.isEmpty()) {
// addTestContacts();
}
// Настраиваем адаптер
adapter = new ContactAdapter(this, contacts);
listView.setAdapter(adapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addContact();
}
});
// Обработка нажатия на элемент списка
listView.setOnItemClickListener((parent, view, position, id) -> {
showDeleteDialog(position);
});
}
private void addContact() {
String name = inputName.getText().toString().trim();
String phone = inputNumber.getText().toString().trim();
// Валидация полей
if (TextUtils.isEmpty(name)) {
inputName.setError("Введите имя");
inputName.requestFocus();
return;
}
if (TextUtils.isEmpty(phone)) {
inputNumber.setError("Введите номер телефона");
inputNumber.requestFocus();
return;
}
// Создаем новый контакт
Contact newContact = new Contact(name, phone);
// Добавляем в список
contacts.add(newContact);
// Сохраняем в SharedPreferences
contactStorage.saveContacts(contacts);
// Обновляем ListView
adapter.notifyDataSetChanged();
// Очищаем поля ввода
inputName.setText("");
inputNumber.setText("");
// Прокручиваем ListView к последнему элементу
listView.smoothScrollToPosition(contacts.size() - 1);
Toast.makeText(this, "Контакт добавлен: " + name, Toast.LENGTH_SHORT).show();
}
private void showDeleteDialog(int position) {
Contact contact = contacts.get(position);
new AlertDialog.Builder(this)
.setTitle("Удаление контакта")
.setMessage("Вы уверены, что хотите удалить контакт \"" + contact.getName() + "\"?")
.setPositiveButton("ДА", (dialog, which) -> {
deleteContact(position);
})
.setNegativeButton("НЕТ", (dialog, which) -> {
dialog.dismiss();
})
.show();
}
private void deleteContact(int position) {
// Удаляем из списка
contacts.remove(position);
// Сохраняем в памяти (SharedPreferences)
contactStorage.saveContacts(contacts);
// Обновляем ListView
adapter.notifyDataSetChanged();
Toast.makeText(this, "Контакт удален", Toast.LENGTH_SHORT).show();
}
private void addTestContacts() {
contacts.add(new Contact("Мама", "+79115716167"));
contactStorage.saveContacts(contacts);
}
}