да меня это даже бесит чутка. чел может очевиднейшие вещи повторять по 10 раз "видите как просто". а потом херакс и навалил кучу кода в этом уроке. чтением тут понимания не достигнуть. приходится тупо принять это как есть
Если бы я не умел программировать на других языках, мой мозг сломался бы так же, как в первый раз при прочтении книги по программированию на С. Объясняешь лучше чем 95% людей на русскоязычном пространстве.
Быть Вам Профессором МФТИ! Одного оттуда слушал. Ему отдыхать. Вы - просто педагогический Талант. Спасибо Вам большое, Сергей. Известно: Кто ясно мыслит - Тот ясно излагает...
Сергей, предлагаю вам сделать видео на тему как вы дошли до такого уровня понимания в андроид разработке, как проходило обучение, чем пользоваться в процессе, на что обращать внимание, можно какие то личные советы. Очень интересна ваша история если вы не против поделиться!
Дело в том, что здесь используется довольно сложный паттерн, но Сергей говорит только КАК делать, но не говорит ПОЧЕМУ именно так. А это важно для понимания происходящего, чтоб новичок не копировал как обезьянка куски кода, а мог сам их менять по необходимости.
Спасибо за урок. Еще благодарен всем, кто поделился своим опытом, рассказав, что им было тяжело понять эту тему. В итоге, это дает стимул для продолжения. Понимаешь, что ты не один так тормозишь и что нужно продолжать.
Еще бы урок, как можно долгим удержанием выделять нужные элементы для удаления, например, ну и сделать отслеживание, и рисовать кнопки меню бара для удаления выделенных элементов. Нигде не ютубе нет подобного урока
Программированием никогда не занимался, много уроков попробовал и наткнулся на Neco, который наконец-то смог мне что-то объяснить, и начал смотреть. Но, честно признаться, сегодня было особенно тяжело осознавать степень своей тупости. Даже не столько при просмотре этого урока, сколько во время прочтения комментариев под ним. В предыдущих 25-ти уроках я понимал хоть что-то, хоть как-то, очень примерно и в целом, и даже в чем-то импровизировал на практике. А сегодня не понял абсолютно ничего, хотя смотрю этот один ролик уже несколько часов с постоянными перемотками назад, и сейчас только на 29-й минуте. Видимо, на этом придется заканчивать. Автору большая благодарность за старания и удачи в делах, Вы хороший учитель. Спасибо
Что бы научиться программировать нужно понять что некоторые вещи не нужно сразу пытатся понять, это придет со временем. Это как собирать пазлы. иногда жобавляешь новый фрагмент и понимаешь какая это часть картинки а иногда пока несколько вместе не соберешь непоймеш. Аот и тут так же. Данную тему просто посттрайся пройти и иди дальше, после будут примеры и ты с этим адаптером еще раз столкнешься и каждый раз все понятнее будет. Ну и я на днях запишу видео и разжую еще подробнее эту тему так как многие еа этой теме мотивацию теряют
Не могу понять, застрял на настройке rcView. Куда то подевался layoutMananger, Есть Params,Mode, Transition, но Manager никак не вызывается, может его заменили в новых версиях? И вроде по логике подходит layoutDirection, но там проблемы с аргументами начинаются.
Сам ковырялся в инете часа два, а оказывается просто когда мы давали идентификатор для ресайклвью "rcView", мы его дали не элементу ресайклвью, а констрэйн лояуту и вот у него как раз таки нет "layoutManager". У кого тоже такая проблема, просто проверьте в разметке "activity_main.xml" каким элементам, какие идентификаторы вы дали, и скорее всего там будет ошибка.
Посмотрел второй раз. Объясняешь хорошо, но эта информация плохо ложится на низкую базу, хотя повторный просмотр помог прояснить много моментов. В этот раз более понятно, чем в первый раз. Нужно больше практики. Нужно найти где-то задачи для самостоятельного решения.
Отличный материал. Было бы еще лучше. Если в следующих уроках было немного по подробней рассказано про параметры в методах. Например что такое parent и его тип viewgroup и почему именно он нужен,(про тип) а не какой-либо другой. Тот же attachToRoot и что будет если его не указать или указать как true. Для новичков - думаю отличная практика преподавания -- объяснять каждую строчку(читать по коду) и что это значит. А так да, одно из лучших видео объяснения работы ресайклер вью в рунете.
Спасибо, мне нравиться объяснять подробно каждую строчку но время летит так быстро что нехватает время закончить или урок слишком длинный получаеться и народ жалуется.
@Neco Ru на 29 минуте совсем не понятно какие parent? Зачем они? Что это вообще такое и зачем нужно? Лучше 4 урока по 30 минут по одной теме, чем 1 на час и оставить много вопросов) Спасибо за труд, но придется пересматривать. Много чего не понятно
@@NecoRuChannel Видимо вам нужно делать 2 варианта одной темы. Одна для тех, у кого нет терпения смотреть подробные объяснения. Вторая для новичков, которые ничего не знают о программировании. Новички не поймут, если не будут подробные объяснения. Если новичок не понимает почему пишет данный код, он не сможет это запомнить чтобы применять в дальнейшем. Выучить наизусть весь код тоже не вариант. Но если вы не планировали делать видео для новичков, то тогда все ок.
@@NecoRuChannelУ Вас не может быть слишком длинных уроков! Ваш характер не позволяет этого сделать. Все уроки замечательны. Я понимаю, что длительность урока определяется педагогическими задачами, а не жалобами учеников...
Обалдеть. Я присоединяюсь к людям ниже и тоже подтвержу что это самый тяжелый урок из всех. Я едва успевал кодить вслед за неко. Правда это один из тех примеров когда идет много практики но мало теории. Я конечно понимаю принцип работы, но следовало бы рассказать подробнее что это за объект RecyclerView и зачем его можно применить т.к я впервые вижу его в действии. Урок придется пересмотреть еще раз т.к очень много информации не усваивается так быстро. Ну а в остальном спасибо. Получилось с первой попытки. Заодно еще и обновил программу и теперь у меня проект поддерживает более новые версии сдк и котлина. Правда я досих пор почему то не вижу автозаполнения шаблона когда добавляю байдинг класс в грэдл. Мне все приходится писать вручную. Не знаю почему.
Спасибо за урок, учил по книге, ничего не было понятно, перечитывал пересматривал все 10 раз, тут с 1 захода все по полочкам..) Если еще покажете как соединить список с базой данных, Room, будет прямо шикарно!)
Если параллельно не изучать ООП, то очень сложно для восприятия. Но в любом случае огромное спасибо за доступное изложение ))) Чувствую, что буду разбирать приложение на примитивы и пытаться понять, для чего каждая строчка кода.
Без знаний о наследовании и полиморфизме очень трудно понять что там происходит, благо до просмотра видео я это знал, так бы точно нихрена не понял) Но надо в среде разработки поэксперементировать.
@@tolkoviy да, изучил. Еще по андроиду есть хорошая - Head First Android Development, 3-е издание, она вроде еще не переведена на русский, там почти 1,5 тысячи страниц, но много картинок и читается легко.
По сути речь идёт про самый обычный динамический список Неко ты уже показывал такое когда рассказывал про Firebase из тех уроков я за 1 день смог сделать простой мессенджер, создание лобби с динамическим обновлением, и ещё несколько других динамических листов (Тогда я только только учился), этому списку можно кроме всего сделать приличную анимацию, и в Unity можно реализовать такой-же свой собственный UI интерфейс т.к префаб может выступать как экземпляр объекта (по сути так и есть)
Кстати, в каком-то из уроков видел, как ты во внутреннем классе создаешь переменные из внешнего(класса оболочки), чтобы эти переменные(из внешнего) класса можно было использовать во внутреннем, эта проблема решается проще - нужно ко внутреннему классу добавить приставку inner
Прекрасный урок, очень просто и легко рассказываете. За простотой чувствуется понимание процессов андройда. Не скажу, что я прям новичок, у меня есть опыт в программирование, то есть я хочу перейти в эту сферу, пытаюсь, но хочу сказать вы очень доступно рассказываете. На мой взгляд, совсем новичков, у которых Английский не родной, может сбивать всё-таки названия Адаптер и Холдер, так как названия не говорящие. Видела, что кто-то написал, что это специфика Андройда. Это не так. Это Model-View и эти элементы встречаются практически везде, где делают этот паттерн. Чтобы было попятнее View - это RecycleView, ModelView(модель представления) - Adapter, в модели прописывается data set на 1 элемент - это Holder. Из-за того, что его выделяют в класс(это правильно, конечно), но люди без опыта может запутать и добавить сложностей, хотя это просто способ. В Model View нужно прописать данные, как ты хочешь их использовать на 1 элемент, сколько таких элементов ты хочешь сделать.
buildFeatures { viewBinding true } работает в MainActivity , при попытки написать val binding = PlantItemBinding.bind(item), он его не видит PlantItem просто нет в списке, или что-то вырезали с видео или в чем причина, 2 раза пытался написать с нуля код и 2 раза не видит PlantItemBinding
Я сталкнулся с такой же проблемой в моем случае ошибка была в названии xml файла я назвал его plant_view ,а класс искал как PlantItemBinding (у меня он назывался PlantViewBinding) [Лучше поздно чем никогда]
Лучшее объяснение recyclerview. А если в recyclerview нужно произвести определенные вычисления, например проверять картинку по специальному алгоритму. Из какого места лучше вызвать данную функцию?
Большое спасибо, очень подробно и увлекательно объясняете. Было бы восхитительно, если Вы брали темы для последующих уроков из курса Android Fundamentals ru-vid.com/group/PLjLCGE4bVpHCJvtGpEVl-4IYGHB1A8FCc и объясняли их простым смертным, успехов вам!)
Здравствуйте! Прежде всего, выражаю Вам огромную благодарность за подробный разбор столь сложной темы. Подскажите, есть ли на вашем канале продолжение темы "Recycler view", в которой бы разбирались свайпы, пагинация и прочие действия с ячейками?
Здравствуйте, спасибо большое за уроки 👍 Все очень доступно и разложено по полочкам. И хотел ещё задать вопрос. Нужно в RV использовать две разные разметки(активный и не активный элемент). Как использовать необходимую разметку, я понял (проверяю viewType, и получаю нужную) Но чтобы вставить необходимый текст в элемент или картинку, используется класс Holder. И там прописывается на прямую: ...1razmetkaBinding.bind(view) Единственное решение, которое нашел, это создание второго класса Holder, для второй разметки. Это правильное решение?
Вопросы: как сделать так что бы список plant выводился не с 0 (Plant 0 и тд), а с 1 и при этом был полный список? и как сохранить активность при повороте или сворачивании приложения?
я частично исправил. что бы растения выводились не с 0 а с 1, нужно добавить переменную var position = 1 и записать так private fun init(){ binding.apply { rcView.layoutManager = GridLayoutManager(this@MainActivity, 3) rcView.adapter =adapter buttonAdd.setOnClickListener { if (index > 4) index = 0 if (position>5) position = 1 val plant = Character(imageIdList[index], "Character $position") adapter.addPlant(plant) index ++ position++ } } тогда будет последовательный вывод не с 0 а с 1 (plant 1, plant2 и тд), выводить будет ровно столько сколько есть картинок или сколько было задано в коде, то есть если их 10 то будет (plant 1...plant 10, после 10 сбрасывается и идет отсчёт сначала ) что бы отсчет не сбрасывался а продолжался можно строчку if (position>5) position = 1 не писать
Кстати неко, сделай видео о том, как в этом списке сделать работающие чек боксы, потому-что мне приходилось делать костыли создавать массивы которые паралельно хранят в себе индекс просмотренного Holder`a и значение bool был ли он до этого нажат (Т.к лист не хранит в памяти все View элементы (в целях производительности) они подгружаются динамически, и все состояния View элемента становятся такими-же как у его экземпляра)
@@nikitawhite4516 я решил это сохраняя статы, можно либо создавать временный файл который хранит статы и удалять покидая активити (если там не только чек боксы, а вообще сложный лист), либо создавать массив и сохранять туда статы
holder это название переменной которое создается автоматически. Ты можешь назвать свой холдер класс например MyBestHolder но все равно будет переменная holder можешь ее переназвать если тебя не устраивает. Мы же тоже когда создаем переменные им даем название например var myVariable: String
@@JonathanSulivan666 мы когда в функцию onCreateViewHolder передаем создание нашего Holder то следущая функция onBindViewHolder нам выдает его в виде переменной holder
Добрый вечер. Появился такой вопрос. Во многих уроках других блогеров, используется ListView+Adapter для сознания построчного списка. Но так же в некоторых уроках, натыкался, где говорят что listview использовать уже не стоит, даже в самых простых ситуациях, что лучше использовать recycleview. Что из этого правда?
Сергей, спасибо за уроки Не могли бы вы подсказать для совсем зеленых, как лучше учить по вашим видео материал? Нужно ли разбирать и понимать каждое слово, зависимость, наследование, вложенные классы и тд Или понять общий смысл? Я пытаюсь писать конспект параллельно, но чем больше пишу - тем больше у меня вопросов появляется, тогда я начинаю гуглить, писать чату gpt, что по итогу отнимает у меня очень много времени, порой несколько дней, ибо крыша начинает дымить уже от объёма информации. Что приводит к замедлению прогресса и ощущением себя полным лохом
Привет, не нужно для начинающих пытаться все запомнить нужно просто в начале привыкать к коду к логике и понимать то что усвоиться а то что нет после поймеш. На первых шагах главное не потерять мотивацию от перегруза и дать мозгу привыкнуть к новой непривычной для него логике. А после когда сам смысл будет понятен то уже останешься только учиться разным направлениям в андроид но это уже намного проще и не нужно все помнить это просто нереально даже для экспертов.
Что-то как-то сложно. Параллельно видео печатал свой код и повторял все в точности. Пока ты говоришь что делать - я практически все пишу сам. Но после того, как написал, смотрю на итоговый код и не понимаю, как бы я сам это написал. Повторить точно не могу, т.к. в голове не уложилось. Но делать нечего, едем дальше.
Сергей, вы хорошо объясняете, но не говорите почему именно так. Поэтому для новичков, понять данный урок сложно. Может быть у кого-то получится выучить код наизусть, но такой способ изучения программирования забудется. Не понимая почему так, освоить урок, по-моему, невозможно. Если вы делаете уроки не только для продвинутой аудитории, но и для новичков, то было бы лучше, если вы так объясняли почему именно так написали. Я ни в коем случае, не намерен обидеть вас. Я из числа новичков, который хочет понять RecyclerView с View Binding. Но к сожалению, у меня не получилось понять урок.
здравствуйте, как мне сделать импорт import androidx.recyclerview.widget.LinearLayoutManager уже все что мог попробовал, приложение запускается но картинки не добавляются
Если у вас при нажатии на кнопку ничего не появляется, можете попробовать заменить ширину и высоту у всех элементов (кроме картинки и текста) на wrap_content