Нативная разработка мобильных приложений



Download 3,69 Mb.
Pdf ko'rish
bet211/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   207   208   209   210   211   212   213   214   ...   228
Bog'liq
Нативная разработка мобильных приложений

с
охранение
 
книг
 
в
 
закладках
Итак, наш слой хранения данных сохраняет книги в базе данных. Если поз
-
же нам предложат воспользоваться удаленной службой для добавления в базу 
данных большего количества книг из библиотеки, у нас уже будет иметься вся 
необходимая для этого инфраструктура. Давайте вспомним, что нам осталось 


340

Сохранность данных
сделать. Помните ту кнопку, которую мы добавили для сохранения понравив
-
шейся книги в закладках? Давайте подключим ее.
Android
Как уже не раз отмечалось, сделать это можно несколькими способами, и кто-
то из вас мог бы предложить добавить в таблицу 
BOOKS
столбец типа 
INTEGER
и сохранять в нем 0 (нет) или 1 (да), в зависимости от включения книги в за
-
кладки (в отличие от большинства баз данных SQL, SQLite не имеет логическо
-
го типа данных – вместо них обычно используются целые числа, как только что 
было описано). На практике лично я так бы и поступил, но в этом примере мы 
используем альтернативный подход, с одной стороны, для простоты, а с дру
-
гой – для демонстрации еще одной распространенной и удобной особенно
-
сти платформы Android, обсуждавшейся в первой части «Задачи и операции», 
в главе 11.
Как уже упоминалось, класс 
SharedPreferences
принимает множество (
Set

строк (
String
). Он кажется идеальной структурой данных для нашей цели – нам 
нужна уникальная неупорядоченная коллекция идентификаторов книг (номе
-
ров ISBN), по которым легко можно определить, находится ли книга в заклад
-
ках. Если включить флажок, мы добавим ISBN в множество, если выключить – 
удалим его. Все просто! В какой-то момент у вас может появиться желание 
добавить в пользовательский интерфейс некоторый визуальный признак, на
-
пример звезду, которая меняет свой цвет с золотого на серый, или специаль
-
ный стиль отображения в списке, но сейчас мы просто обновим текст кнопки, 
чтобы он отражал текущее состояние.
Итак, сначала создадим метод, добавляющий книгу в 
Set
в 
SharedPref­
erences
. Определим эту функцию в классе 
BookDetailAc ti vi ty
, потому что в этом 
случае мы получим локальный доступ к объекту 
Context
(самому экземпляру 
Ac ti vi ty
) и всем его дочерним компонентам:
Java
private void toggleFavorite(Button button, String isbn) {
SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
Set favorites = preferences.getStringSet("favorites", new HashSet<>());
if (favorites.contains(isbn)) {
favorites.remove(isbn);
button.setText("Mark as Favorite");
} else {
favorites.add(isbn);
button.setText("Remove from favorites");
}
SharedPreferences.Editor editor = preferences.edit();
editor.putStringSet("favorites", favorites);
editor.apply();
}
Kotlin
private fun toggleFavorite(button: Button, isbn: String) {
val preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE)


Что мы узнали 

341
val favorites = preferences.getStringSet("favorites", HashSet())
favorites?.let {
if (it.contains(isbn))
it.remove(isbn)
button.text = "Mark as Favorite"
} else {
it.add(isbn)
button.text = "Remove from favorites"
}
}
val editor = preferences.edit()
editor.putStringSet("favorites", favorites)
editor.apply()
}
Этот метод можно использовать в качестве обработчика щелчка на кнопке, 
как показано ниже:
Java
findViewById(R.id.button_save).setOnClickListener(
view -> toggleFavorite((Button) view, book.getIsbn()));
Kotlin
button_save.setOnClickListener{view -> toggleFavorite(view as Button, book.isbn)}
Этого должно быть достаточно! Запустите приложение, выберите книгу из 
списка и на странице с подробной информацией нажмите кнопку, отвечающую 
за сохранение книги в закладках. Поскольку это значение находится в храни
-
мой структуре, оно будет сохраняться между запусками приложения.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   207   208   209   210   211   212   213   214   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish