Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


RecyclerView.ViewHolder no puede vincular la vista con ButterKnife

Estoy usando ButterKnife para vincular mis vistas en mi ViewHolder . Mi código está abajo:

 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<DataObject> data; public MyAdapter(List<DataObject> data) { this.data = data; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_layout, parent, false); return new ViewHolder(view); } public static class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.row_header_view) View rowHeaderView; @BindView(R.id.row_header_view_text) TextView headerTextView; @BindView(R.id.row_data_view) View rowDataView; @BindView(R.id.row_data_view_text) TextView rowDataTextView; @BindView(R.id.row_data_view_detail_text) TextView rowDataDetailTextView; public ViewHolder(View view) { super(view); ButterKnife.bind(this, view); } } } 

Por alguna razón en mi ViewHolder todos los BindView no hacen nada. Todos son nulos. Puedo confirmar con certeza que están en mi diseño. ¿Qué está mal con mi código anterior? Lo he utilizado según la documentación que aparece aquí:

Http://jakewharton.github.io/butterknife/#reset

¿Hay algo más requerido? Estoy usando la versión ButterKnife :

 compile 'com.jakewharton:butterknife:8.2.1' 

Si agrego la línea abajo:

 rowHeaderView = view.findViewById(R.id.row_header_view); 

Es capaz de obtener la vista correctamente. Pero, ¿cómo tiene sentido esto? ¿No se ButterKnife usar ButterKnife donde findViewById es utilizable?

2 Solutions collect form web for “RecyclerView.ViewHolder no puede vincular la vista con ButterKnife”

Asegúrese de que si tiene que utilizar la biblioteca ButterKnife para usar esta manera

Archivo build.gradle del proyecto

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } 

A continuación, aplique el complemento 'android-apt' en su module-level build.gradle y añada las dependencias de Butter Knife:

 apply plugin: 'android-apt' android { ... } dependencies { compile 'com.jakewharton:butterknife:8.2.1' apt 'com.jakewharton:butterknife-compiler:8.2.1' } 

Actualización para octubre de 2016: Probablemente no necesite apt y el complemento de android-apt. La versión 2.2 del complemento Android Gradle tiene una configuración de annotationProcessor que deberías usar en su lugar.

En el estudio de Android 2.2 en adelante, sólo tiene que añadir estos en su módulo build.gradle:

 compile 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.