Var ar:array of array of integer; n1,k,i,n2,j:integer; b:boolean; begin; readln(n1); readln(n2); inc(n1); inc(n2); k:=1; setlength(ar,n1+1); while k<>n1 do begin; setlength(ar[k],n2+1); inc(k); end; b:=false; k:=0; i:=1; j:=1; writeln('Matrix:'); while i<>n1 do begin; writeln; while j<>n2 do begin; ar[i,j]:=random(100)-50; write(ar[i,j]:4); inc(j); end; j:=1; inc(i); end; i:=1; j:=1; while i<>n1 do begin; while j<>n2 do begin; if ar[i,j]<0 then b:=true; inc(j); end; if b=false then begin; writeln; writeln(i); exit; end; b:=false; inc(i); j:=1; end; writeln; writeln('Все'); end.
Нет смысла чистить только созданный пустой список. Дальше я бы вам советовал следующим образом. Для начала при объявлении адаптера не нужно сразу ему передавать список:
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
и дальше сеттинг адаптера как и было у вас в вашем примере. Так же второй вариант как решить вашу проблему, но не уверен что получится, можно в цикле там где вы выводите сообщение в лог обновлять адаптер:
n1,k,i,n2,j:integer;
b:boolean;
begin;
readln(n1);
readln(n2);
inc(n1);
inc(n2);
k:=1;
setlength(ar,n1+1);
while k<>n1 do
begin;
setlength(ar[k],n2+1);
inc(k);
end;
b:=false;
k:=0;
i:=1;
j:=1;
writeln('Matrix:');
while i<>n1 do
begin;
writeln;
while j<>n2 do
begin;
ar[i,j]:=random(100)-50;
write(ar[i,j]:4);
inc(j);
end;
j:=1;
inc(i);
end;
i:=1;
j:=1;
while i<>n1 do
begin;
while j<>n2 do
begin;
if ar[i,j]<0 then b:=true;
inc(j);
end;
if b=false then
begin;
writeln;
writeln(i);
exit;
end;
b:=false;
inc(i);
j:=1;
end;
writeln;
writeln('Все');
end.
ответ:Для начала в 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()
}