ответ:Для начала в 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()
}
mm = 10;
nn = 8;
type
M = array[1..mm, 1..nn] of integer;
KS = array[1..2, 1..nn] of integer;
procedure GetKS(var a: M; var b: KS; m, n: integer);
{ Помещает в b[1,*] суммы отрицательных элементов массива а[m,n] по столбцам,
а в b[2,*] - количества этих элементов }
var
i, j, s, k: integer;
begin
for j := 1 to n do
begin
k := 0; s := 0;
for i := 1 to m do
if a[i, j] < 0 then begin s := s + a[i, j]; Inc(k) end;
b[1, j] := s; b[2, j] := k
end
end;
procedure Init(var a: M; m, n: integer);
{ Заполняет массив a[m,n] случайными значениями на интервале [-50;50]
и выводит их на экран }
var
i, j: integer;
begin
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i, j] := Random(101) - 50;
Write(a[i, j]:5)
end;
Writeln
end
end;
procedure OutKS(var a: KS; n: integer);
{ Выводит на экран элементы массива a[2,n]}
var
i, j: integer;
begin
for i := 1 to 2 do
begin
for j := 1 to n do Write(a[i, j]:5);
Writeln
end
end;
procedure Work(var a: M; var b: KS; m, n: integer);
{ цикл работы с массивом }
begin
Init(a, m, n);
GetKS(a, b, m, n);
Writeln('Суммы и количество');
OutKS(b, n);
end;
var
X, Y: M;
Z: KS;
begin
Writeln('Массив Х');
Work(X, Z, 10, 8);
Writeln;
Writeln('Массив Y');
Work(Y, Z, 6, 8);
end.
Тестовое решение:
Массив Х
-50 49 0 28 -8 -27 -4 -45
10 10 10 27 17 15 -35 47
-22 -42 21 40 -40 -4 1 -49
-21 37 5 -34 26 10 -33 -26
2 27 30 -46 -9 -2 33 2
-3 6 -9 -38 -29 -18 -36 28
-8 39 -16 49 -50 39 -37 5
-2 -2 -2 6 18 -21 -20 -50
-7 -15 -26 40 35 -40 5 31
-25 -31 -8 4 -45 -11 31 48
Суммы и количество
-138 -90 -61 -118 -181 -123 -165 -170
8 4 5 3 6 7 6 4
Массив Y
22 27 24 38 -24 -32 -26 13
14 -25 6 44 50 -24 34 -33
-24 -10 20 36 -43 -25 44 -19
-17 4 23 31 -4 9 -1 -41
17 1 34 42 6 -8 25 -26
-40 11 -24 10 4 12 31 50
Суммы и количество
-81 -35 -24 0 -71 -89 -27 -119
3 2 1 0 3 4 2 4