// PascalABC.NET 3.2, сборка 1437 от 03.05.2017 // Внимание! Если программа не работает, обновите версию!
unit garnaga;
interface
function LC(r:real):real;
function SC(r:real):real;
function RC(x,y:real):real;
implementation
function LC(r:real):=2*pi*r;
function SC(r:real):=pi*r*r;
function RC(x,y:real):=sqrt(x*x+y*y);
end.
2. Основная программа
uses garnaga;
begin var x,y,r:real; Writeln('Введите X, T, R: '); Read(x,y,r); Writeln('Длина окружности ',LC(r):0:5); Writeln('Площадь круга ',SC(r):0:5); Writeln('Расстояние от центра до начала координат ',RC(x,y):0:5); end.
3. Пример работы
Введите X, T, R: 3.5 -6.7 20 Длина окружности 125.66371 Площадь круга 1256.63706 Расстояние от центра до начала координат 7.55910
Нет смысла чистить только созданный пустой список. Дальше я бы вам советовал следующим образом. Для начала при объявлении адаптера не нужно сразу ему передавать список:
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
и дальше сеттинг адаптера как и было у вас в вашем примере. Так же второй вариант как решить вашу проблему, но не уверен что получится, можно в цикле там где вы выводите сообщение в лог обновлять адаптер:
// PascalABC.NET 3.2, сборка 1437 от 03.05.2017
// Внимание! Если программа не работает, обновите версию!
unit garnaga;
interface
function LC(r:real):real;
function SC(r:real):real;
function RC(x,y:real):real;
implementation
function LC(r:real):=2*pi*r;
function SC(r:real):=pi*r*r;
function RC(x,y:real):=sqrt(x*x+y*y);
end.
2. Основная программа
uses garnaga;
begin
var x,y,r:real;
Writeln('Введите X, T, R: '); Read(x,y,r);
Writeln('Длина окружности ',LC(r):0:5);
Writeln('Площадь круга ',SC(r):0:5);
Writeln('Расстояние от центра до начала координат ',RC(x,y):0:5);
end.
3. Пример работы
Введите X, T, R:
3.5 -6.7 20
Длина окружности 125.66371
Площадь круга 1256.63706
Расстояние от центра до начала координат 7.55910
ответ:Для начала в 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()
}