studio recyclerview jakewharton butter android dagger butterknife

android - recyclerview - implementation com jakewharton butterknife 7.0 1



Diferencia entre Dagger y ButterKnife Android (5)

¿Alguien puede señalar la diferencia entre Dagger y Butterknife? Sé que Butterknife es una biblioteca de inyección de vista y daga es una biblioteca de inyección de dependencia. Pero la documentación en línea parece un poco sobrecargada para mí. De acuerdo con la documentación de Butterknife, también puedes hacer inyecciones sin actividad, ¿qué es lo que hace daga? ¿O malinterpreté algo?

http://square.github.io/dagger/

http://jakewharton.github.io/butterknife/


@ JakeWharton lo responde parcialmente en el comentario:

TL; DR: Se complementan entre sí. Usa Butterknife para inyectar vistas, Dagger para el resto.

Si usas Dagger para tratar de inyectar vistas, pasarás un mal momento :) Intenta pensar en Butter Knife como un medio para unir vistas en lugar de inyectarlas. Solo lo llamé inyección porque todos los conversos de RoboGuice se quejaban de la falta de "inyección de vista" con Dagger. Realmente no es una inyección. Al igual que la respuesta menciona, es solo una forma de reducir la repetición. ¡Debajo del capó está llamando a findViewById como lo haría!


Aquí hay un enlace a la documentación de Buterknife. Es muy sencillo. Sin embargo, lo que la documentación no dice pero el diseño de Butter Knife implica es que también puede usar Butter Knife en vistas personalizadas. Simplemente reemplace "this" con "context" o "getContext" para que pueda determinar el alcance.

Enlace: http://jakewharton.github.io/butterknife/

Combino Butter Knife, parcelable y easyAdapter para vistas de lista en mi proyecto. La razón es menos repetitiva y con el parcelamiento más rápido y más limpio. Entonces, si tiene un montón de ListViews, recomiendo este enfoque.

Campo de golf:

https://github.com/johncarl81/parceler

https://github.com/ribot/easy-adapter


ButterKnife se creó para simplificar el registro de oyentes de clic y para reducir el texto estándar proporcionado por las llamadas a findViewById() .

Dagger y Dagger2 son sistemas de inyección de dependencia de propósito general.

Ignora el texto en Guice y MVVM, y lee Dependency Injection y The Android Way . Esto más o menos responde a lo que Dagger debe hacer y simplificar.

https://spring.io/blog/2011/08/26/clean-code-in-android-applications



ButterKnife está dirigido a inyectar vistas solamente. La inyección de no actividad solo significa que puede proporcionar su propia raíz de vista para inyectar vistas (como con vistas infladas manualmente, etc.). Dagger es un poco más complicado. Puede inyectar todo lo que desee siempre y cuando haya especificado Module - clase que satisfaga esas dependencias (alternativamente puede usar inyección de constructor).

Como conclusión: yo diría que ButterKnife te ayuda a evitar todo ese código repetitivo para crear vistas (también conocido como (TextView)findViewById(R.id.some_text_view); nada más. Debajo del capó, todavía hace todo ese código tan aburrido. no es realmente una inyección ...

También vale la pena mencionar que Jake Wharton es uno de los desarrolladores de ambas geniales bibliotecas :)

Aquí hay algunos enlaces útiles:

Proyecto de muestra Dagger en GitHub

Presentación de Dagger en Devoxx (Jake Wharton)

Sitio de Dagger con desarrolladores de Dagger

No tiene muchos enlaces útiles de ButterKnife. Es realmente simple y directo, así que espero que no necesites