#include <iostream>
#include <cmath>
#include <locale.h>
using namespace std;
int main(int argc, char **argv)
{
setlocale(0, "Russian");
int a, b, c;
double p, res;
cout << "Введите длины сторон треугольника:"<<endl;
cin >> a >> b >> c;
if (a + b > c && a + c > b && b + c > a) {
p = (a + b + c) / 2.0;
res = sqrt(p * (p - a) * (p - b) * (p - c));
cout << "Площадь треугольника: "<< res <<endl;
}
else
cout << "Невозможно вычислить площадь!" <<endl;
return 0;
}
ответ:Для начала в 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()
}