А чего им писать, если софт используется не так, как было задумано? Runtime permissions появились в Android 6. В 4.4 ТС явно согласился отдавать геолокацию при установке приложения. Потом запретил каким-то обходным способом. Приложение к такому повороту было не готово. Ок. ТС должен страдать.
Всё это должно тебя было навести на мысль, что с дизайном этого класса что-то не так.
Самое простое решение сделать его иммутабельным. data class Order(val items: List<OrderItem>). Конечно, придется переписать код, который с ним работает, так что это просто совет.
Developer, куда и чем он ударился? Тем что сделали нормальные функциональные типы? Сделали красивую поддержку коллбеков? Сделали поддержку DSL и тайпсэйф билдеры? Дааа уж, конечно, джавовые вырвиглазные лямбды, которые даже нарушают джавовые же принципы(проверяемые исключения, давай до свиданья), они лучше. А BiFunction вообще красота.
Конечно говно мамонта, а как иначе? switch-expression без вывода типов - вырвиглаз. "паттерн матчинг" на instanceOf без вывода типов - вырвиглаз. Stream API - вырвиглаз. Sealed классы без вывода типов - ненужно.
Developer, Вообще-то в котлине ФП тоже по желанию. И да, удачи тебе разбираться в чужом говнокоде на питоне без тестов. Потом расскажешь, насколько это сложнее, чем на Котлине.
Джава под андроид - устаревшее говно мамонта. Джава в принципе(не JVM, а язык)- устаревшее говно мамонта, которое пытается в себя затащить новый синтаксический сахар, но получается у него хреново.
Kaktys_DH, окай. Но это не калькулятор. Очевидные вещи про комментарии и функции тебе сказали. Сделай нормальное вычисление выражений типа 1+2*(3 - 4)/5 хотя бы. Это уже будет челлендж, в котором тебе придется напрячь мозг, научиться работать со строками, написать какой-никакой код, поразбираться с алгоритмами. Завязывай с многословностью, твою программу никто никогда не увидит, поэтому достаточно будет, чтобы она ожидала ввод(или принимала его в аргументы main) и печатала результат.
hawkkiller, у тебя мутабельный список. В нем просто поменяй и потом нотифай вызови.
GridView уже никто не пользуется, использовать RecyclerView + GridLayoutManager надо.
Роман Мирр, сгенерировать можно.
Допустим, ты это сделал на клиенте. Как теперь доказать серверу, что сгенерировал твой клиент, а не чужой?
Допустим, ты сгенерировал на сервере в ответ на запрос клиента. Как ты это сделал, если ты ещё не знаешь, что клиент твой, а не чужой?
Проблема курицы и яйца. Поэтому я предложил просто хранить сертификат, которым подписывается запрос, на устройстве, а если нужна хорошая защита - купить её.
А это эмодзи из юникода.