Course Content
-
Сохраняем данные в Room + ViewModel
- Коротко об Android Architecture Components и Room
- Создание проекта и добавление необходимых зависимостей
- Создание Entity
- Создание DAO
- Знакомство с LiveData
- Создание базы данных Room
- Знакомство с патерном Repository (Репозиторий) и создание слоя для доступа к данным
- Создание ViewModel
- Создание ячейки списка для отображения UI
- Создание адаптера и добавление RecyclerView
- Добавление записи в БД используя Room
- Создание Activity
- Подключение к базе данных Room
- Итоги
Создание Activity
В этом уроке мы создадим Activity, которая умеет добавлять слова в БД.
Для этого сначала добавьте следующие строковые ресурсы в values/strings.xml
:
<string name="hint_word">Введите слово</string> <string name="button_save">Сохранить</string> <string name="empty_not_saved">Невозможно сохранить, так как значение пустое.</string>
И добавьте цвета в value/colors.xml
:
<color name="buttonLabel">#d3d3d3</color>
Кроме этого, давайте добавим размеры, для этого
- Выберите модуль app в окне Project
- Выберите File > New > Android Resource File
- Из доступных категорий выберите Dimension
- Выберите имя: dimens
Вставьте значения размеров в values/dimens.xml
как показано ниже:
<dimen name="small_padding">6dp</dimen> <dimen name="big_padding">16dp</dimen>
После этого создайте новую Activity
- Выберите File > New > Activity > Empty Activity
- Введите название
NewWordActivity
. - Не забудьте проверить что новая Activity появилась в Android Manifest!
<activity android:name=".NewWordActivity"></activity>
Обновите activity_new_word.xml
как показано ниже:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/edit_word" android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:hint="@string/hint_word" android:inputType="textAutoComplete" android:padding="@dimen/small_padding" android:layout_marginBottom="@dimen/big_padding" android:layout_marginTop="@dimen/big_padding" android:textSize="18sp" /> <Button android:id="@+id/button_save" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:text="@string/button_save" android:textColor="@color/buttonLabel" /> </LinearLayout>
Далее, обновите код в новой Activity как показано ниже:
class NewWordActivity : AppCompatActivity() { private lateinit var editWordView: EditText public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_new_word) editWordView = findViewById(R.id.edit_word) val button = findViewById<Button>(R.id.button_save) button.setOnClickListener { val replyIntent = Intent() if (TextUtils.isEmpty(editWordView.text)) { setResult(Activity.RESULT_CANCELED, replyIntent) } else { val word = editWordView.text.toString() replyIntent.putExtra(EXTRA_REPLY, word) setResult(Activity.RESULT_OK, replyIntent) } finish() } } companion object { const val EXTRA_REPLY = "com.example.android.wordlistsql.REPLY" } }
Предыдущий
Добавление записи в БД используя Room
Следующий
Подключение к базе данных Room