У меня есть текстовые значения, которые я извлекаю из текстовых полей. Я хочу разрешить пользователю не заполнять эти поля. Но если пользователь не заполнил одно или несколько значений, я хочу отобразить значения по умолчанию для этих входов.
У меня есть класс данных, который выглядит примерно так:
@Parcelize
data class Profile(
val firstName: String = "",
val lastName: String = "",
val description: String = "",
val imageUri: String = ""
) : Parcelable
При нажатии I вызвать метод из моего класса ViewModel и передать ему текущие входные значения, которые затем сохраняются с использованием класса репозитория:
viewModel.createProfile(
etFirstName.text.toString(),
etLastName.text.toString(),
etProfileDescription.text.toString(),
profileImageUri.toString()
)
// The createProfile function itself
fun createProfile(
firstName: String = "John",
lastName: String = "Doe",
description: String = "Default Description",
imageUri: String = ""
) {
val profile = Profile(firstName, lastName, description, imageUri)
// Persist data
}
В другом фрагменте я установил некоторые данные пользовательского интерфейса, используя эти постоянные данные, например:
private fun observeProfile() {
viewModel.getProfile()
viewModel.profile.observe(viewLifecycleOwner, Observer {
val profile = it
tvName.text = getString(R.string.profile_name, profile.firstName, profile.lastName)
tvDescription.text = profile.description
ivProfileImage.setImageURI(Uri.parse(profile.imageUri))
})
}
Итак, в настоящее время createProfile
ожидает 4 аргумента. Я могу передать меньше, потому что у меня есть необязательные параметры, но как я могу условно передать аргументы в createProfile
в зависимости от того, является ли значение ненулевым или пустым. Я, конечно, могу создавать проверки для каждого значения, но как лучше всего подойти к этому?
Обновление
Не думаю, что я достаточно ясно выразился в своем исходный вопрос, потому что я не только передаю значения из текстовых полей в createProfile
. profileImageUri
- это переменная класса типа Uri?
, для которой изначально установлено значение null
. Пользователь может выбрать изображение, и эта переменная обновляется данными изображения. Причина, по которой я передаю и сохраняю данные изображения в виде строки, заключается в том, что все данные профиля также сохраняются в Firestore, поэтому со строками легче работать.