Создание Приложения Для Android (Серия Из 6 Частей)
Здесь у нас есть еще одна неделя, чтобы продолжить предыдущий пост
В последнем посте мы создали базу данных одного объекта для хранения профиля пользователя. На этот раз мы воспользуемся этим.
Давайте начнем добавлять файл конвертера типов, который не был добавлен на прошлой неделе. Это необходимо для хранения типов данных данных.
import androidx.room.TypeConverter;
import java.util.Date;
public class Converters {
@TypeConverter
public static Date fromTimestamp(Long value) {
return value == null ? null : new Date(value);
}
@TypeConverter
public static Long dateToTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}
Затем в файл room добавьте аннотацию преобразователя типов и измените версию, если вы уже скомпилировали проект.
@Database(entities = {profileModel.class}, version = 2, exportSchema = false)
@TypeConverters({Converters.class})
public abstract class databaseRoom extends RoomDatabase {
...
}
Изменить основное действие, вызывающее экземпляр POJO и вызывающий метод getProfile .
- Конструктор принимает приложение в качестве параметра.
- Метод getProfile принимает идентификатор в качестве параметра
profilePojo = new profilePOJO(getApplication()); user = profilePojo.getProfile(1);
Метод getProfile будет использоваться для получения информации о пользователе. После запуска приложения первым действием будет поиск информации в базе данных, если в ней нет информации, все тексты редактирования будут отображаться пустыми; в противном случае тексты редактирования будут отображаться с информацией.
Логика, описанная ниже, показана следующим образом.
if (user != null) {
username.setText(user.getUsername());
byte[] bitmapdata = user.getPhoto();
Glide.with(this).load(byteArray2Bitmap(bitmapdata)).into(imageview);
switch (user.getGender()) {
case "male":
male.setChecked(true);
female.setChecked(false);
break;
case "female":
female.setChecked(true);
male.setChecked(false);
break;
}
birthday.setText(parseDate(user.getBirthday()));
}
Теперь появляется логика вставки или обновления при нажатии кнопки сохранить,
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
byte[] img;
String gender;
if (bitmap == null) {
img = user.getPhoto();
} else {
img = convertBitmap2byte(bitmap);
}
if (female.isChecked()) {
gender = "female";
} else {
gender = "male";
}
if (user == null) {
user = new profileModel(
username.getText().toString(),
gender,
birthdate,
img);
profilePojo.insert(user);
} else {
user.setGender(gender);
user.setPhoto(img);
user.setUsername(username.getText().toString());
if (birthdate != null) {
user.setBirthday(birthdate);
}
profilePojo.update(user);
}
}
});
Прежде чем проверять пустоту пользователя, соберите данные из основной деятельности и установите их в глобальные переменные. После этого создайте пользователя, если он пуст, и выполните операцию вставки, если он не пуст, выполните операцию обновления.
Обратите внимание, что мы создаем еще два метода Разобранный и преобразовать растровое изображение в 2 байта . Первый используется для преобразования переменной даты в строку.
private String parseDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
String sDay = String.valueOf(day);
String sMonth = getMonth(month);
String sYear = String.valueOf(year);
sDay = addLeftZero(sDay);
return (sMonth + " " + sDay + ", " + sYear);
}
Второй используется для преобразования растрового изображения в массив байтов для сохранения его в базе данных вместо создания новой папки в галерее.
private Bitmap byteArray2Bitmap(byte[] bitmapdata) {
return BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
}
Ааааа… Это оно. Теперь у нас есть функциональный профиль активности, следующий пост будет последним в этой серии, немного проверяющий дизайн. Я не очень хорош в этом, но я постараюсь сделать все возможное, чтобы принести что-нибудь интересное.
Как всегда, проект может быть разветвлен на github для той цели, которую вы хотите ему дать.
Создание Приложения Для Android (Серия Из 6 Частей)
Оригинал: “https://dev.to/edrome/how-to-create-an-android-app-android-room-part-2-3bfm”