Consejo rápido usar un cuchillo de mantequilla para inyectar vistas en Android

En esta sugerencia rápida, aprenderá cómo integrar la biblioteca Butter Knife en sus proyectos para crear fácilmente una instancia de las vistas en su diseño en el código de su aplicación..

Introducción

En cada aplicación de Android, tienes que usar el findViewById () Método para cada vista en el diseño que desea utilizar en el código de su aplicación. Pero a medida que los diseños de las aplicaciones se vuelven más complejos, la llamada a este método se vuelve repetitiva y aquí es donde entra la biblioteca de cuchillos de mantequilla..

La biblioteca Butter Knife, desarrollada y mantenida por Jake Wharton (Square Inc.), tiene anotaciones que ayudan a los desarrolladores a instanciar las vistas de nuestra actividad o fragmento. También tiene anotaciones para manejar eventos como al hacer clic()onLongClick (), etc.

En el proyecto de ejemplo de este tutorial, puede ver una aplicación de ejemplo con una actividad y un fragmento con una implementación que utiliza la biblioteca Butter Knife y una implementación regular. Vamos a explorar los pasos necesarios para integrar la biblioteca Butter Knife..

1. Usando la biblioteca del cuchillo de mantequilla

Paso 1: Añadir la Dependencia

Agregue la siguiente dependencia al proyecto construir.gradle expediente:

compilar 'com.jakewharton: butterknife: 6.1.0'

A continuación, sincronice su proyecto con este archivo presionando el botón de sincronización.

Paso 2: Usa las anotaciones

En cada actividad o fragmento, debe eliminar, o comentar, cada llamada de la findViewById () método y añadir el @InjectView anotación antes de la declaración de la variable, indicando el identificador de la vista.

@InjectView (R.id.sample_textview) TextView sample_textview;

Paso 3: inyectar vistas

En el onCreate () método de la actividad, Antes de usar cualquiera de las vistas., llamada inyectar sobre el Cuchillo de mantequilla objeto.

ButterKnife.inject (este);

Si está utilizando fragmentos, debe especificar el origen de las vistas en el onCreateView () método como se muestra a continuación.

Vista vista = inflater.inflate (R.layout.sample_fragment, null); ButterKnife.inject (esto, ver);

Ahora puede comenzar a usar las vistas en el código de su aplicación. Butter Knife manejará la instanciación de cada vista por ti.

Eso es todo lo que tiene que hacer para usar la biblioteca de Cuchillos de mantequilla en una actividad o fragmento. En la siguiente sección, le mostraré cómo usar la biblioteca de Cuchillos de mantequilla para usar vistas de lista.

2. Usando la biblioteca de cuchillos de mantequilla con vistas de lista

los Vista de la lista La clase es un caso especial para implementar, ya que crea una instancia de las vistas dentro de un adaptador. Para integrar la biblioteca de Butter Knife en una vista de lista, primero debe crear el diseño personalizado para los elementos en la vista de lista. Voy a nombrar el mio list_view_item y añade el siguiente diseño:

    

En este sencillo diseño, vamos a mostrar una imagen y un texto. A continuación, necesitamos crear el adaptador para la vista de lista. Llamémoslo ListViewAdapter.

la clase pública ListViewAdapter extiende BaseAdapter LayoutInflater inflater; listViewAdapter público (inflante de LayoutInflater) this.inflater = inflater;  @Override public int getCount () return 5;  @Override public Object getItem (int position) return null;  @Override public long getItemId (posición int) return 0;  @Override public View getView (int position, View convertView, ViewGroup parent) return null;  clase estática ViewHolder public ViewHolder (vista de vista) 

Dentro de la clase de adaptador, hay una clase estática llamada ViewHolder para mantenerlo en orden. Vamos a utilizar esta clase para contener las vistas. Vamos a implementar el ViewHolder clase de la siguiente manera:

clase estática ViewHolder @InjectView (R.id.image_in_item) imagen ImageView; @InjectView (R.id.textview_in_item) TextView text; ViewHolder público (vista de vista) ButterKnife.inject (esto, vista); 

Todo lo que tenemos que hacer ahora es modificar el getView () método de la siguiente manera:

public View getView (int position, View convertView, ViewGroup parent) ViewHolder holder; Vista view = inflater.inflate (R.layout.list_view_item, parent, false); titular = nuevo ViewHolder (ver); Picasso.with (inflater.getContext ()) .load ("http://lorempixel.com/200/200/sports/" + (posición + 1)) .into (holder.image); holder.text.setText ("Este es un texto para el número de imagen:" + posición); vista de vuelta 

En este método, estoy inflando el diseño personalizado dentro de la ver variable y lo utilizan para crear un objeto de la ViewHolder clase. Tenga en cuenta que estamos usando el Picasso clase para cargar imágenes remotas y rellenar la vista de texto con algo de texto. Puede encontrar el tutorial de Picasso útil si desea familiarizarse con esta biblioteca..

No olvides añadir el android.permission.Internet Permiso en el manifiesto de Android. Si no lo haces, Picasso no podrá conectarse a la web y cargar las imágenes remotas.

Finalmente, todo lo que tiene que hacer es crear una instancia de la vista de lista y adjuntar el adaptador. Voy a hacer esto dentro de una nueva actividad., ListViewActivity, Como se muestra abajo. Puede ver un ejemplo de esta implementación en los archivos de origen de este tutorial..

la clase pública ListViewActivity extiende ActionBarActivity @InjectView (R.id.listView) ListView list; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_list_view); ButterKnife.inject (este); list.setAdapter (nuevo ListViewAdapter ((LayoutInflater) getSystemService (LAYOUT_INFLATER_SERVICE))); 

3. Eventos

También puedes usar las anotaciones de Butter Knife para eventos. Elija la anotación que desea usar, de acuerdo con el evento que desea responder, y colóquela antes del método que desea ejecutar cuando ocurra el evento..

@OnClick (R.id.sample_textview) public void showToastMessage () Toast.makeText (MainActivity.this, "Este es un mensaje de la actividad", Toast.LENGTH_SHORT) .show (); 

Conclusión

Puedes usar el cuchillo de mantequilla inyectar() método en cualquier lugar que de lo contrario utilizaría el findViewById () Método para ahorrar tiempo y evitar la repetición de código cuando tiene que crear instancias de las vistas en el diseño. Siéntase libre de compartir este consejo rápido si lo encontró útil.