Выполнение задания предусматривает написание программного кода на языке SQL, обеспечивающего создание БД. Написанный код должен быть выполнен. Преподавателю представляется и сам программный код, и база данных, созданная в результате его выполнения. Уточнив и дополнив заданную предметную область, выявить необходимый набор сущностей, определить требуемый набор атрибутов для каждой сущности, определить связи между объектами. Создать запросы на выборку на языке SQL.
Библиотека
Минимальный список характеристик:
•Автор книги, название, год издания, цена, количество экземпляров, краткая аннотация;
•номер читательского билета, ФИО, адрес и телефон читателя, дата выдачи книги читателю и дата сдачи книги читателем, отметка о выбытии.
Книга имеет много экземпляров и поэтому может быть выдана многим читателям.
Выборки:
•Выбрать книгу, для которой наибольшее количество экземпляров находится "на полках" (не выданы читателям).
•Выбрать читателей, которые имеют задолженность более 4 месяцев.
•Определить книгу, которая была наиболее популярной весной 2000 года.
Определить читателей, у которых на руках находятся книги на общую сумму более 100 руб
Пусть количество пикселей в рисунке K, тогда объем памяти, занимаемой одним рисунком = (K*3)/1024 + 128 Кбайт.
X = 8*(K*3/1024 + 128)+2.5*1024
2. При использовании палитры из 2^16 цветов для хранения цвета 1 пикселя используется 16 бита = 2 байта.
Объем памяти, занимаемой одним рисунком = (K*2)/1024 + 128 Кбайт.
X = 20*(K*2/1024 + 128)
8*(K*3/1024 + 128)+2.5*1024 = 20*(K*2/1024 + 128)
К = 65536 (количество пикселей в рисунке)
X = 20*(K*2/1024 + 128) = 20*(65536*2/1024 + 128) Кбайт =
20*(128 + 128) Кбайт = 5120 Кбайт = 5120/1024 Мбайт = 5 Мбайт
ответ:Для начала в onCreate() уберите эту строку:
chatContainer.clear()
Нет смысла чистить только созданный пустой список. Дальше я бы вам советовал следующим образом. Для начала при объявлении адаптера не нужно сразу ему передавать список:
lateinit var adapter: RecyclerChatAdapter
Дальше как только ваш список заполнен вы это проверяете в цикле и инициализируете адаптер:
when {
documentSnapshot != null -> {
for (dc in documentSnapshot.documentChanges) {
when (dc.type) {
DocumentChange.Type.ADDED -> {
val chat = dc.document.toObject(Chat::class.java)
chatContainer.add(chat) // Добавление данных в Recycler
if(chatContainer.size == documentSnapshot.documentChanges)
{
adapter = RecyclerChatAdapter(chatContainer)
}
}
}
}
}
}
и дальше сеттинг адаптера как и было у вас в вашем примере. Так же второй вариант как решить вашу проблему, но не уверен что получится, можно в цикле там где вы выводите сообщение в лог обновлять адаптер:
for (i in chatContainer) {
adapter.notifyDataSetChanged()
}