Тёмный

👀 View BINDING - El método DEFINITIVO para acceder a las vistas en ANDROID👨‍💻 

DevExpert - Programación Android y Kotlin
Подписаться 49 тыс.
Просмотров 11 тыс.
50% 1

🎁Te cuento cómo aprender todo sobre Kotlin en este training gratuito:
👉 bit.ly/3jv1z73
En el vídeo de hoy quiero enseñarte en pantalla lo que podemos hacer con View Binding y sus ventajas.
Dime en comentarios si quieres ver más contenido como este, me ayudaría saberlo.
Si tienes alguna duda, la responderé en próximos vídeos.
¡Un abrazo!
Veremos:
2:40 Butter Knife
4:00 Data binding
5:00 Synthetic imports de Kotlin
7:30 Pantalla, código
Si quieres ver el código aquí 👉github.com/ant...
Artículo donde hablo sobre Kotlin Android Extensions 👉antonioleiva.c...
He publicado un cheatsheet sobre View Binding aquí:
👉👉 / b9t9ivzo6pc
Únete a la Comunidad de DevExperto en Discord 👉 devexperto.com...
🎁 Descárgate GRATIS una guía gratuita sobre Testing aquí ➡ devexperto.com...
🎁 Descárgate GRATIS una guía gratuita sobre arquitecturas Android aquí ➡️ devexperto.com...
¿Quieres más contenido gratuito?
🎁 Masterclass para aprender Android desde cero ➡️ bit.ly/3jv1z73
Instagram ➡️ devexperto.com/instagram
Twitter ➡️ devexperto.com/twitter
Podcast ➡️ devexperto.com/podcast
Blog ➡️ devexperto.com

Опубликовано:

 

16 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 71   
@devexpert_io
@devexpert_io 4 года назад
He publicado un cheatsheet sobre View Binding aquí: 👉👉 instagram.com/p/B9T9IVZo6pc/ Si aún no te decides sobre si Kotlin es el lenguaje que deberías aprender, te animo a que te apuntes a mi masterclass gratuita 👉 bit.ly/2ZQzlM9
@alelafargue8283
@alelafargue8283 2 года назад
Muchas Gracias, por tus clases, muy bien impartidas y un carisma tremendo! Saludos.
@devexpert_io
@devexpert_io 2 года назад
Hola, muchas gracias!! 😊
@atobajas
@atobajas 4 года назад
Muy buena idea este tipo de vídeos. Muchas gracias por compartir tus conocimientos.
@devexpert_io
@devexpert_io 4 года назад
Gracias Antonio!
@juansebastianangaritatorre1182
@juansebastianangaritatorre1182 3 года назад
Gracias por todo, realmente excelente contenido!
@devexpert_io
@devexpert_io 3 года назад
Gracias a ti!
@activoysaludable
@activoysaludable 3 года назад
Buen video crack 😎
@devexpert_io
@devexpert_io 3 года назад
Gracias! 😊
@pabloeliasdulceyparra4622
@pabloeliasdulceyparra4622 3 года назад
Excelente amigo. desde Valera - Trujillo - Venezuela
@devexpert_io
@devexpert_io 3 года назад
Gracias, saludos!
@guillermoarispe7594
@guillermoarispe7594 4 года назад
Muy claro, como siempre! View binding toma más fuerza todavía desde que Kotlin anunció que en próximas versiones va a "deprecar" Kotlin Android Extensions. Teniendo un proyecto muy grande, con muchas clases que usan el import sintético de kotlin, alguna recomendación para no morir en el intento de la migración a View Binding? UPDATE: De este video me fui al otro de Junio 2020, y vi que mencionabas sobre esta pregunta :D
@devexpert_io
@devexpert_io 4 года назад
Gracias Guillermo! Efectivamente, en 4.1.20 Kotlin Android Extensions van a estar deprecadas. Según oí, JetBrains pensaba publicar guías de migración hacia ViewBinding para hacerlo más sencillo, pero no sé si al final lo harán o no. Si no, con lo que viste del otro vídeo creo que debería ser sencillo (aunque siempre habrá casos y casos).
@MrJualen
@MrJualen 4 года назад
Me declaro muy fan de estos videos 🙂
@devexpert_io
@devexpert_io 4 года назад
Muchas gracias!
@albertmartorellgarcia8528
@albertmartorellgarcia8528 4 года назад
Hola Antonio. Me gusta el nuevo formato de vídeos más prácticos con ejemplos de código. En los proyectos que trabajo actualmente utilizo el patrón MVVM con DataBinding, y realmente estoy muy contento. Por lo que explicas, View Binding es como una versión "lite" de DataBinding, muy útil si quieres evitar el código boiler plate con el findViewById. Es así? Un saludo!
@devexpert_io
@devexpert_io 4 года назад
Gracias Albert! Pues seguiré haciendo algunos así
@serdnahernandez2486
@serdnahernandez2486 4 года назад
Me estoy comiendo tus videos como droga, muy interesantes 👌🏻♥️
@devexpert_io
@devexpert_io 4 года назад
Muchas gracias!
@devexpert_io
@devexpert_io 4 года назад
@@sagitario26XD oh qué alegría 😍
@javigutierrez2776
@javigutierrez2776 4 года назад
Hola, Antonio! Muchas gracias por tus vídeos, la verdad es que me estoy iniciando en Kotlin por mi cuenta y me está resultando un poco complicado viniendo de java, tú lo estás haciendo un poquito más fácil jaja. Te quería preguntar si queremos hacer una clase base, por ejemplo, un BaseActivity, cómo podemos hacer para incluir el binding? Hay alguna manera limipa de meterlo? Gracias de antebrazo!
@devexpert_io
@devexpert_io 4 года назад
En principio el ViewBinding iría en las clases hijas, pero podrías hacer alguna cosa para indicarle al padre cuál es la clase del binding y que lo haga solo por detrás. Por ejemplo tipando la BaseActivity
@tecnologiasdeinformacionso6424
@tecnologiasdeinformacionso6424 4 года назад
Gracias por compartir tanto conocimiento, Saludos cordiales desde Perú.
@devexpert_io
@devexpert_io 4 года назад
Gracias!
@ddeandroid5279
@ddeandroid5279 4 года назад
Hola Antonio. Actualmente tengo una aplicación con MVP y todo el proyecto lo manejé con data binding.... recomendarías hacer un refactor de todo el proyecto para dejarlo unicamente con viewBinding? Y si si, existe alguna forma de hacer ese refactor de forma natural?. Muchas gracias y muy buena serie de videos.
@devexpert_io
@devexpert_io 4 года назад
No, para nada. Si estás contento con Data Binding, adelante con ello. View Binding es una versión reducida de Data Binding.
@vas804
@vas804 4 года назад
Muy buen video la verdad, pero a mi me surge una duda. Como podemos inflar las vista de esta manera en un Fragment()?
@devexpert_io
@devexpert_io 4 года назад
Si te fijas es igual. A raíz del XML que quieres inflar se genera un objeto binding, lo inflas con el inflater que te llega en onCreateView, y esta función devolverá el root del binding
@josemanuelcastilloaguado4688
@josemanuelcastilloaguado4688 3 года назад
y si la variable que declare en el OnCreate la voy a utilizar en otra funcion por ejemplo OnStart?
@devexpert_io
@devexpert_io 3 года назад
Para eso necesitas crearla como propiedad, con un "lateinit var", la inicializas en el onCreate, y ya la usas donde quieras.
@dnnc9555
@dnnc9555 3 года назад
Gracias por resolverme la duda sobre qué son los binding, tengo la ultima versión de Android Studio pero al crear un nuevo proyecto como como el nav drawer me los genera automaticamente, ya he intentando modificar el gradle en enableBinging=false, que necesito hacer para que no me los genere al crear nuevo proyectos ?
@devexpert_io
@devexpert_io 3 года назад
No creo que exista opción, a no ser que el wizard te lo permita cuando estás creando el nuevo proyecto. Yo es que siempre trabajo con proyectos en los que empiezo con una activity vacía, para que no me incluya cosas que no quiero.
@jesusmarin8456
@jesusmarin8456 3 года назад
Acabo de empezar con Kotlin y Android Studio 4.1.1, me he comprado tu libro y, SORPRESA, he descubierto que las Kotlin Android Extensions están despreciadas y ya no funcionan... Todo esto tras perder 2 ratos tratando de averiguar porqué no me funcionaba lo que indicas en el libro... Sería bueno que actualizaras tu libro quitando toda esta parte que ya no funciona. Gracias de antemano.
@devexpert_io
@devexpert_io 3 года назад
Hola Jesús! La verdad es que mantener actualizado un libro es costosísimo, y además eso que comentas hará como un mes que lo han deprecado. Imagina revisar un libro por completo cada vez que algo cambia... Hago lo que puedo con el tiempo que tengo, pero la realidad es que hay muy pocos libros que se actualicen cuando algo se modifica. Yo lo hago cuando me queda algún hueco, pero no es lo normal.
@jesusmarin8456
@jesusmarin8456 3 года назад
@@devexpert_io Entiendo lo que dices, pero deberías de poner en la página web del libro un enlace a las erratas del mismo. Claro que esto no es bueno desde el punto de vista comercial... Entonces deberías de tener una página de erratas accesible para la gente que lo haya comprado e irla actualizando con los comentarios del personal que lo vaya leyendo: Yo te puedo ir dando todo lo que vaya encontrando (Como donde usar las View Binding), una vez que me vuelva a atrever a volver a leerlo (esta vez lo haré sabiendo que lo que indicas puede que no funcione en AS 4.1). Por cierto, si te decides a realizar lo que te digo, no lo llames erratas que suena fatal, llámalo "Cambios y Mejoras en AS 4.1". Para finalizar, indicarte que deprecated quiere decir obsoleto. Supongo que a ti se te va el subconsciente, como a mí, y por ello traduces deprecado (y yo despreciado)...
@miguelfuentes853
@miguelfuentes853 3 года назад
@@jesusmarin8456 si vale la pena comprar el libro ?
@santiagoaguilar4257
@santiagoaguilar4257 4 года назад
Hola Antonio, y si quiero usar un viewbinding desde otro layout?, Por ejemplo yo tengo un MainActivity, creo una layout diferente y quiero llamar a los componentes de esa layout (recalco, que no es del MainActivity), con el ViewBinding al MainActivity. Gracias de antemano.
@devexpert_io
@devexpert_io 4 года назад
Si es otro layout, será otro binding. No sé si he entendido bien el caso, pero cada layout tiene su binding y se gestionarían por separado.
@santiagoaguilar4257
@santiagoaguilar4257 4 года назад
@@devexpert_io ah okay, muchas gracias
@kevinmeza9586
@kevinmeza9586 4 года назад
Hola, quiero empezar con MVVM sin embargo he visto que también existe un databinding. En ese caso se podría usar viewBinding y dataBinding en un mismo proyecto?
@devexpert_io
@devexpert_io 4 года назад
En realidad ViewBinding es una pequeña parte de lo que databinding hace, así que indirectamente usas ambos
@kevinmeza9586
@kevinmeza9586 4 года назад
@@devexpert_io Ya veo, gracias por aclarármelo 👍
@yokozun4
@yokozun4 4 года назад
Hola Antonio, estoy tratando de implementar este ejemplo pero con Fragments; qué debería tener en considerción para esto. Ya que no me está resultando y me sigue apareciendo: "Unresolved supertypes: ViewDataBinding", a pesar de que en mi gradle tengo: "buildFeatures { viewBinding true }". Ya hice lo de "Invalidate caches / restart" several times :C Desde ya muchas gracias!
@devexpert_io
@devexpert_io 4 года назад
Lo conseguiste solucionar? No debería haber diferencia
@yokozun4
@yokozun4 4 года назад
@@devexpert_io hola Antonio. Lo que pasa es que como estaba trabajando con dataBinding lo tenía en 'true', y al querer cambiar a viewBiding elimine databinding, dejando en 'true' solo el viewBinding. Esto fue lo que generaba conflictos; asi es que opté por dejar ambas declaraciones. La verdad no sé si estará correcto, pero para ese ejemplo funcionó. Luego creer un proyecto nuevo solo usando viewBinding y no tuve inconvenientes. Gracias!!!
@luisangelibanezbarbosa8880
@luisangelibanezbarbosa8880 4 года назад
Muchas gracias por compartir tu conocimiento, explicas genial!, pero en caso de yo querer trabajar con los componentes de navegación, cómo haría la referencia a la respectiva vista? cómo haría para decir que esa vista tiene que inflar mi R.layout.vista_usuario, por ejemplo o en una actividad que cree manualmente?
@devexpert_io
@devexpert_io 4 года назад
No entiendo muy bien la pregunta, Luis. La puedes elaborar un poco más? Todos los XML generan un objeto de binding que puedes inflar de esa forma.
@luisangelibanezbarbosa8880
@luisangelibanezbarbosa8880 4 года назад
@@devexpert_io sin entenderla, me has respondido Antonio, muchas gracias
@oxidan78
@oxidan78 3 года назад
Hola Antonio, muchas gracias, algunos codigos se pusieron ok con el viewBinding pero otros siguen en rojo. hice los dos cambios en el MainActivity como en tu ejemplo ¿que puede haber pasao? gracias
@devexpert_io
@devexpert_io 3 года назад
Sin ver el código la verdad que es muy difícil saber. Qué tipo de errores te da? Se ejecuta aunque salga en rojo si le das al play?
@oxidan78
@oxidan78 3 года назад
@@devexpert_io Hola Antonio me aparece este mensaje: Could not find method viewBinding() for arguments. Y no se ejecuta cuando le doy play
@devexpert_io
@devexpert_io 3 года назад
No sé muy bien a qué se debe. Ya te digo que sin ver el código es complicado. Sí quieres únete al grupo de Telegram y pregunta por allí: t.me/devexperto
@cristiangonzalezego
@cristiangonzalezego 4 года назад
Hola, la parte que no entiendo es cuando se reemplaza setContentView y utiliza el layouInflate. En donde se define este ultimo? y como esta vinculado a layout de activity_main? Gracias!
@devexpert_io
@devexpert_io 4 года назад
Al usar ActivityMainBinding, ya sabe que tiene que inflar activity_main, no hace falta especificarlo más.
@cristiangonzalezego
@cristiangonzalezego 4 года назад
@@devexpert_io Gracias, justo habia leido que ademas de crear clases por cada item view que haya, tambien crea un Activity Binding de acuerdo a los layout que tegamos, en este caso se llaman activity_main
@devexpert_io
@devexpert_io 4 года назад
Exacto, por cada layout, la librería de ViewBinding genera una clase.
@javiermendez4879
@javiermendez4879 3 года назад
View Binding es lo mismo que data Binding? Pregunto porque veo que se implementan igual 🤔
@devexpert_io
@devexpert_io 3 года назад
No, es un subconjunto, una parte que hab extraído para hacer aprovecharlo para una parte específica sin tener que incluir todo Databinding
@fernandopinon7130
@fernandopinon7130 3 года назад
Buenas. Hace poco tiempo que descubrí tu canal y voy siguiendo tus videos, desde el más antiguo al más reciente, (Quiero pasarme a Kotlin, pero aún no he escrito nunca en este lenguaje) y en este video, he recreado la misma "app" y todo ha ido correcto hasta que me ha dado por compilar y mandarlo a ejecutarse en el móvil, en el que no aparecen ni los cuadros de texto ni el botón y ademas sale una advertencia: DSL element 'android.viewBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.viewBinding'. It will be removed in version 5.0 of the Android Gradle plugin. Affected Modules: app ¿Hay solución para esto? Ya que por lo que dice aquí, este video estaría obsoleto. Seguire adelante, con el resto de videos mientras encuentro una solución para esquivar el findViewById.
@devexpert_io
@devexpert_io 3 года назад
Hola Fernando. Busca otro vídeo que tengo sobre viewbinding. Explico la forma nueva. Pero eso no debería ser el motivo de lo que te está ocurriendo
@fernandopinon7130
@fernandopinon7130 3 года назад
@@devexpert_io Ok, pues ahora lo busco y miro si veo donde está el error de por que no me sale el botón. Muchas gracias por la respuesta. No pensaba que contestarias tan rápido. Cuando lo tenga un poco más claro, porque de momento (este es el primer video con un poco de codigo para practicar y es todo en java) hay mucha teoria pero poca practica y me parece bastante diferente de java, me apuntaré a tu masterclass, quiero aprender Kotlin y creo que para empezar será bueno.
@samuelmaucaille702
@samuelmaucaille702 Год назад
Hola, cómo podría distinguir la actividad en la que estoy si no referencio al nombre?, Gracias de antemano
@devexpert_io
@devexpert_io Год назад
Sí lo referencias con el nombre del objeto del binding
@manunito4179
@manunito4179 3 года назад
val binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.button.setOnClickListener{ Toast.makeText(this@MainActivity, nombre.text, Toast.LENGTH_LONG).show() button me da error, he implementado en Gradle el true y tengo una version superior al 4.0 esto es un poco jaleo, porque no llega a importarse el botón y por tanto no puedo acceder a su vista
@devexpert_io
@devexpert_io 3 года назад
Es raro. A veces hace falta una compilación previa (quita la parte que no compila) para que lo coja todo. Pero la mayoría de las veces no hay que hacer nada para que ya funcione de primeras.
Далее
🤔ЗАЧЕМ ОНИ ЭТО ДЕЛАЮТ?🤦‍♂️
00:49
Mübariz İbrahimovun atası vəfat etdi
00:14
Просмотров 144 тыс.
🔹Flows en Kotlin: Todo lo que necesitas saber
14:09
Tutorial DataBinding Android en Español
17:50
Просмотров 7 тыс.
👨‍💻 Bases de datos en Android con ROOM
16:23
Просмотров 29 тыс.
🤔ЗАЧЕМ ОНИ ЭТО ДЕЛАЮТ?🤦‍♂️
00:49