Anonymous
Как этот callback передавать в презентер ? Как знать когда данные уже можно передать ?
Павел
Как этот callback передавать в презентер ? Как знать когда данные уже можно передать ?
Rx, интерфейсы. Интерфейс передаешь аргументом либо через Даггер/Мокси di
SLS
там 40 классов с тестами, иногда запускаются, но чаще всего эта фигня
Anonymous
Нужно без Rx решить задачу
Павел
Нужно без Rx решить задачу
Future, asynctask, coroutines, threads
✙
Нужно без Rx решить задачу
зачем тебе ретрофит если нужен жсон?
Павел
Async это жб метод. Но не забудь про утечки
✙
это костыли какие-то
✙
обычный хттп клиент заюзай и все
Anonymous
Так это будет то самое что синхронный метод retrofit call.exucute() ?
Павел
Либо ты делаешь execute в побочном потоке, либо callasync в основном
Artur
Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). Как найти проблемный класс? Room
Ivansuper
тот у которого нет конструктора
Неправильно. Тот, у которого конструктор не удовлетворяющий требованиям
Artur
тот у которого нет конструктора
всего 2 модели, у всех у них есть паблик пустой конструктор
Ivansuper
Ибо без конструктора тоже ок
Artur
все поля паблик
Ivansuper
всего 2 модели, у всех у них есть паблик пустой конструктор
Посмотри не повисла ли где аннотация Entity
Artur
только на двух моделях она есть
Artur
но у меня есть класс для Relation
Artur
там идёт Embeded + Relation на две таблицы
Artur
one-to-many
Ivansuper
А, да, там pojo тоже упоминается
Ivansuper
У них тоже конструкторы подходят?
Artur
да я делал уже и пустой
Artur
и без
Artur
и чтобы такие же поля были
Artur
public class LocalChatWithMembers { @Embedded public LocalChat chat; @Relation(parentColumn = "id", entityColumn = "chat_id", entity = LocalChatMember.class) public List<LocalChatMember> members; }
Ivansuper
Вынеси везде конструкторы, где классы касаются модели
Ivansuper
Что то где то висит
Artur
вынести это типо создать пустые?
Ivansuper
Но обычно по варнингу компиляции можно кликнуть и попасть на класс
Ivansuper
вынести это типо создать пустые?
Без явных конструкторов вообще
Ivansuper
Все что ты получаешь из Room им же и инстанциируется. Он не знает как работать со специальными конструкторами
Artur
аааа
Artur
вот что он пишет в другом месте
Artur
error: Cannot figure out how to read this field from a cursor. error: Cannot find the parent entity column id in .chat.local.member.LocalChatWithMembers. Options: chat
Artur
типо как я понимаю не может с маппить модель LocalChat
Ivansuper
Покажи содержимое LocalChatWithMembers
Artur
видимо есть нюансы с название филда этого если он эмбэдэд
Artur
public class LocalChatWithMembers { @Embedded public LocalChat chat; @Relation(parentColumn = "id", entityColumn = "chat_id", entity = LocalChatMember.class) public List<LocalChatMember> members; }
Ivansuper
LocalChat это entity?
Artur
The query returns some columns [id, name, page, description, group, image_url, new_messages_count] which are not use by .local.member.LocalChatWithMembers. You can use @ColumnInfo annotation on the fields to specify the mapping. .chat.local.member.LocalChatWithMembers has some fields [chat] which are not returned by the query. If they are not supposed to be read from the result, you can mark them with @Ignore annotation. You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, name, page, description, group, image_url, new_messages_count. Fields in .local.member.LocalChatWithMembers: chat.
Artur
дада
Ivansuper
С embedded очень много подводных камней
Artur
это Энтити
Ivansuper
Сделай LocalChatWithMembers extends LocalChat
Artur
@Entity(tableName = "chats") public class LocalChat { @PrimaryKey @ColumnInfo(name = "id") public long id; @Ignore public List<LocalChatMember> members; public LocalChat() { } }
Ivansuper
И положи просто поле с Relation
Artur
не все поля скинул, чтобы не флудить
Ivansuper
Не надо ColumnInfo если ты даже имя не меняешь
Artur
но примерно так
Artur
насчёт ColumnInfo я помню )
Artur
но мне так удобнее
Ivansuper
Суть в том, что рум дропает аннотации PrimaryKey из Embedded
Ivansuper
Возможно это тут замешано
Artur
ну вроде как собирается
Artur
что то всё таки с эмбэдод
Artur
если наследоваться
Ivansuper
Никогда не использовал в качестве эмбеддед энтити. Как то не поворачивалась рука
Ivansuper
Кстати будь аккуратнее с эмбеддед и где есть риск, указывай префикс в аннотации эмбеддед
Ivansuper
Иначе дубликацию полей схватишь
Artur
ага, помню это
Artur
но это же если эмбедед задано в энтити
Artur
и там указать префикс, то получается потом этот префикс нужно тянуть везде
Ivansuper
А вот то что тянуть везде -- да
Ivansuper
Короче глаз да глаз
Ivansuper
Мне не нравится на самом деле что рум не делает автоматически уменьшенную проекцию для Relation
Ivansuper
И ты либо в ручную пишешь поля, которые без контроля висят, либо в молоко из СКЛайт тянешь все колонки
Ivansuper
Ибо иногда нужно вернуть кастомную структуру с минимальными данными и не более
Artur
ну да
Artur
ну может потом чего добавят интересного
Artur
прикольно конечно, вернул всё обратно(без наследования) и уже в этот раз смог с маппить курсор (
Aleksandr
Игрушку собрали на Kotlin и openCV - супер фричную. Такой точно нигде нет, только что выкинули на Маркет. Здесь можно похвалиться ?
Aleksandr
Бровями нужно гонять мяч
Aleksandr
Точнее block breaker для бровей )
Vadim
Запускаю foreground с таким вот notification, а в итоге в уведомлениях стандартная надпись "коснитесь ....", как её можно сменить?