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



Download 3,69 Mb.
Pdf ko'rish
bet192/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   188   189   190   191   192   193   194   195   ...   228
Bog'liq
Нативная разработка мобильных приложений

П
ереключение
 
слоя
 
данных
 
на
 
исПользование
 JSON
Как вы помните, в нашем слое данных мы до сих пор используем массив 
samp­
leData
из объекта 
Book
. Давайте удалим это свойство из обоих проектов и пе-
рейдем к использованию файла JSON.
Android
Итак, теперь у нас есть файл 
catalog.json
со всеми объектами 
Book
в формате 
JSON. Для Android-приложения этот файл следует сохранить в виде ресур
-
са в папке уровня проекта 
/assets/
. Эта папка имеет специальные атрибуты 
и поддержку, упрощающую операции с ней, но в данный момент она может 
отсутствовать. Если вы не видите папку с именем 
assets
в каталоге проекта, 
выполните следующие действия: в представлении проекта «Android», в списке 
файлов слева, щелкните правой кнопкой мыши на имени проекта и выберите 
пункт 
Create
(Создать), затем 
Folder
(Папка), потом 
Assets Folder
(Папка акти
-
вов). Далее создайте новый текстовый файл в этом каталоге, скопируйте в него 
предыдущий код JSON и сохраните файл с именем 
catalog.json
.
Давайте переделаем наш класс 
BookDataSource
так, чтобы он использовал этот 
файл вместо статических данных. Для начала прочитаем файл в потоке поль
-
зовательского интерфейса, но это только для примера, вообще же, загружая 
данные с диска или из сети, вы должны выполнять эту операцию в фоновом 
потоке.
В главе 6 мы показывали, как прочитать файл с диска, а в главе 12 продемон
-
стрировали пару способов преобразования текста в формате JSON в действи
-
тельные экземпляры объектов Java. Здесь мы используем оба способа.
Реализуем необходимую функциональность в классе источника данных. Со 
временем вы можете найти более подходящее место для этой логики, а пока 


Переключение слоя данных на использование JSON 

301
начнем с базового источника данных 
List
, добавив в него код, который 
будет читать 
catalog.json
при создании экземпляра и преобразовывать каждый 
объект JSON в экземпляр 
Book
:
Java
public class Books extends ArrayList implements BookDataSource {
public Books(Context context) {
super();
try {
readBooksFromDisk(context);
} catch (Exception e) {
Log.d("MyApp", "There was a problem reading Books json from disk: " +
e.getMessage());
}
}
private void readBooksFromDisk(Context context) throws IOException {
try {
InputStream inputStream = context.getAssets().open("catalog.json");
StringBuilder builder = new StringBuilder();
int b = inputStream.read();
while (b != -1) {
builder.append((char) b);
b = inputStream.read();
}
String json = builder.toString();
List books = new Gson().fromJson(json,
new TypeToken>() {}.getType()); addAll(books);
} finally {
if (inputStream != null) {
inputStream.close();
}
}
}
}
Kotlin
class Books(context: Context) : ArrayList(), BookDataSource {
init {
try {
readBooksFromDisk(context)
} catch (e: Exception) {
Log.d("MyApp", "There was a problem reading Books json from disk: " + e.message)
}
}
@Throws(IOException::class)
private fun readBooksFromDisk(context: Context) {
try {
val inputStream? = context.assets.open("catalog.json");
val builder = StringBuilder()


302

Моделирование каталога библиотеки
var b = inputStream.read()
while (b != -1) {
builder.append(b.toChar())
b = inputStream.read()
}
val json = builder.toString()
val books = Gson().fromJson(json, object : TypeToken>() {}.type)
addAll(books)
} finally {
inputStream?.close()
}
}
}
Если теперь запустить приложение, вы получите массив экземпляров 
Book

число которых равно числу объектов JSON в файле 

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   188   189   190   191   192   193   194   195   ...   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