Ваня
Смотрим функцию doInBackground
Ваня
Она не должна взаимодействовать с первым потоком
Sersh
class PageFragment(var position: Int) : Fragment(), IPageView { var list: List<DateMy>? = null private val presenter by lazy { PagePresenter(this) } private lateinit var adapter: RecyclerView.Adapter<*> private lateinit var recycle: RecyclerView private lateinit var recycleManeger: RecyclerView.LayoutManager override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { var root = inflater.inflate(R.layout.fragment_page, container, false) recycle = root.findViewById<RecyclerView>(R.id.recyclelistview) recycleManeger = LinearLayoutManager(activity!!) adapter = RecycleAdapters(presenter.getAllList(position)) recycle.adapter = adapter recycle.layoutManager = recycleManeger return root } override fun onResume() { init() overuse() super.onResume() } override fun onPause() { list = null super.onPause() } private fun init() { DownloadTask () } private fun overuse() { if (position == 0 && presenter.getAllSiagret(position).get(0) > getLimit()!!.toInt()) { var string = presenter.getAllSiagret(position).get(0).toString() + "→" + getLimit() all_sigaret.setTextColor(resources.getColor(R.color.red)) all_sigaret.text = string } } private inner class DownloadTask : AsyncTask<String, Void, Array<Int>>() { /** The system calls this to perform work in a worker thread and * delivers it the parameters given to AsyncTask.execute() */ override fun doInBackground(vararg urls: String): Array<Int>{ return presenter.getAllSiagret(position) } /** The system calls this to perform work in the UI thread and delivers * the result from doInBackground() */ override fun onPostExecute(result: Array<Int>) { all_sigaret.text = result.get(0).toString() similar_sigaret.text = result.get(1).toString() electronic_sigaret.text = result.get(2).toString() } } }
Max
class PageFragment(var position: Int) : Fragment(), IPageView { var list: List<DateMy>? = null private val presenter by lazy { PagePresenter(this) } private lateinit var adapter: RecyclerView.Adapter<*> private lateinit var recycle: RecyclerView private lateinit var recycleManeger: RecyclerView.LayoutManager override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { var root = inflater.inflate(R.layout.fragment_page, container, false) recycle = root.findViewById<RecyclerView>(R.id.recyclelistview) recycleManeger = LinearLayoutManager(activity!!) adapter = RecycleAdapters(presenter.getAllList(position)) recycle.adapter = adapter recycle.layoutManager = recycleManeger return root } override fun onResume() { init() overuse() super.onResume() } override fun onPause() { list = null super.onPause() } private fun init() { DownloadTask () } private fun overuse() { if (position == 0 && presenter.getAllSiagret(position).get(0) > getLimit()!!.toInt()) { var string = presenter.getAllSiagret(position).get(0).toString() + "→" + getLimit() all_sigaret.setTextColor(resources.getColor(R.color.red)) all_sigaret.text = string } } private inner class DownloadTask : AsyncTask<String, Void, Array<Int>>() { /** The system calls this to perform work in a worker thread and * delivers it the parameters given to AsyncTask.execute() */ override fun doInBackground(vararg urls: String): Array<Int>{ return presenter.getAllSiagret(position) } /** The system calls this to perform work in the UI thread and delivers * the result from doInBackground() */ override fun onPostExecute(result: Array<Int>) { all_sigaret.text = result.get(0).toString() similar_sigaret.text = result.get(1).toString() electronic_sigaret.text = result.get(2).toString() } } }
Оушит скинь на gist, ну емае😅
Sersh
я не залил еще
Ваня
Простыми словами в doInBackground не должно быть "фиолетовых" переменных
Sersh
ок, спасибо попробую
Max
Самому интересно. Может, дело в том, что прежде всего метод findViewById возвращает View, а не Button, к примеру
Max
На практике не знаю, есть ли результат от этого
Ivansuper
Самому интересно. Может, дело в том, что прежде всего метод findViewById возвращает View, а не Button, к примеру
Да. Возвращает просто вью. Но так было раньше. Сейчас этот метод работает с дженериком и кастить не нужно. Достаточно иметь место присвоения результата нужного типа
влад
Но на старых девайсах лучше кастить значит? Дженерики не во всех версиях же были
Не скасть и запусти на эмуляторе с 2.3.3, получишь ответ :)
Max
Не скасть и запусти на эмуляторе с 2.3.3, получишь ответ :)
Достаточно ответить было "да" или "нет"
влад
Кмк оно от минсдк зависит и будет разворачиваться в старый код без генериков (когда они появились в жаве то?), Но могу сильно заблуждаться
Ivansuper
Но на старых девайсах лучше кастить значит? Дженерики не во всех версиях же были
Там скорее всего насрать, потому что у джавы не сохраняется информация о типах при сборке дженериков, и check cast все равно произойдет
Ivansuper
А по сигнатуре метод совпадает со старым
влад
Достаточно ответить было "да" или "нет"
Ответ будет интересен чату, правда
Max
Кто-то же придумал каждую вьюшку кастить к типу
Max
Предлагаю написать в Гугл всем чатом
Max
"Как андроид разработчики письмо Гуглу писали"
Ivansuper
Им насрать на этот чат, на меня, и на тебя
Ivansuper
У меня одного невозможно с мобильника ничего вводить в поле поиска dev.android.com?
Ivansuper
При нажатии на поле поиска клавиатура сразу закрывается
Ivansuper
...
Jacob
Есть ситуация в 2 частях приложения один и тот же экран но с очень маленькими различиями (заголовок не в тулбаре и ниже и есть доп текст под заголовком, переход на другой экран при клике) как было бы правильно сделать? - норм ли сделать один фрагмент с параметром флагом каким то (например isScreen2Mode) и от него менять ui?
Kirill
У BadgeDrawable можно установить текст? надо что-то на подобии 2.3К написать
Chubaka
Почему бы не сделать две разных активности, но одинаковый контент не перенести во фрагмент, который будет использоваться и там и там?
а можно одну базовую активити со всем основным и унаследовать от нее две - открывать в зависимости от случая
Jacob
а можно одну базовую активити со всем основным и унаследовать от нее две - открывать в зависимости от случая
в теории можно, тогда наследовать и vm/presenter - тоже много кода и наследование как то лишний раз не хочется использовать
Jacob
вм и презентер тоже разные ? написано только про клики и текст
в вм только различие в обработке клика - на какой экран он ведет
Anonymous
Ребят, приветствую. Такой вопрос. Если идти напрямую на фриланс, что тогда уже выгоднее дизайн или продолжать разработку?
Hovhannes
Дизайнер на фрилансе это выживание со слов знакомого дизайнера
Anonymous
Ну по сути, если брать только сумму то, я согласен с тобой. Но, больше работ на дизайне. Ну, фиг знает
Anonymous
Дизайнер на фрилансе это выживание со слов знакомого дизайнера
Понял, спасибо. Ну, я слышал, об этом, что там мозг кепит, что 25 часов работают, что бы заработать ту сотку
Hovhannes
Вот-вот
Hovhannes
А в разработке 24 часа
Hovhannes
Видишь))
Anonymous
Фух, на час меньше. Аж, сердце с пяток ушло
Anonymous
В, что вообще актуальный ли, разрабы на фрилансе?
Hovhannes
Мне кажется фриланс это пиздец
Andrew
В, что вообще актуальный ли, разрабы на фрилансе?
Без опыта и проектов нах никому не нужны.
Anonymous
Мне кажется фриланс это пиздец
Подработка какраз то
Yehor
Всем привет! Кто работал с Firebase? Я хочу читать базу данных. В инете нашел работу через FirebaseListAdapter, но имхо там слишком все сложно. Мне же нужно просто получить строку/массив строкт конкретного дочернего элемента. + через FirebaseListAdapter урокам 1-2 года и когда я даже копирую, все работает через пень колоду. Библиотеки устаревают и т.д. Подскажите плз годный гайд/наводку, что гуглить.
Anonymous
Без опыта и проектов нах никому не нужны.
Проекты, можно самому составить на листочке и просто их реализовать, парочку. А опыт. Тебе же не будут звонить по вайберу, что бы ты посмотрел им в глаза и они узнали по твоим зрачкам сколько ты в данной сфере
Yehor
сейчас почитаю, спасибо
Anonymous
По сути, на фрилансе уже есть опытные игроки, а если счетать так по частному. То новички, там не ценятся
Anonymous
Вот тут правда
Hovhannes
Всем нужно быстро и вчера
Hovhannes
Всем нужно быстро и вчера
Так что новичок мимо
Anonymous
Тут согласен))
Anonymous
А, что вы вообще? Как оно у вас в программирование? Копеечку имеете или только учитесь?
Anonymous
посоветуйте безопасную андроид прошивку
Anonymous
Статья на хакере была
да смотрел я на хакере. прошивки неособо безопасные
Anonymous
посоветуйте безопасную андроид прошивку
Блокировка + Громкость, безопасность прежде всего)
Anonymous
Есть ли в андроид студии возможность, добавить кастомный пункт шаблонного проекта?
Anonymous
Есть ли в андроид студии возможность, добавить кастомный пункт шаблонного проекта?
Если ты хочешь узнать, можно, как, где и зачем. То тебе поможет гугл, а не простой гугл. А пендосов
Anonymous
непонял
Зажимай просто
Anonymous
Зажимай просто
ну там рекавери
Anonymous
ну там рекавери
Гугл))00 Главное ютуб не чекай
Anonymous
Гугл))00 Главное ютуб не чекай
непоня прикола ну да ладно
Anonymous
У пиндосов есть способ отдельные части. Типо Активити кастомный и прочее. А я говорю про полноценный шаблон, со своим градлом, иерархией папок и т.д.
Anonymous
У пендосов все есть и твои планы на будущее
Anonymous
блин. а че если у андроида будет функция амнезии как у tails?
Anonymous
Ребят, приветствую. Такой вопрос. Если идти напрямую на фриланс, что тогда уже выгоднее дизайн или продолжать разработку?
На фрилансе прекрасно, если повезёт найти адекватного заказчика за нормальную почасовую ставку. Хотя в офисе никогда не работала, сравнить не могу.
Anonymous
are you okay?
К ое арлИ
Anonymous
Л
Anonymous
На фрилансе иы уже обитала?
Уже давно, больше двух лет
Anonymous
Ммм, в разработной сфере?