Android Data Binding: no puede encontrar el setter para el atributo

No estoy seguro de cómo funciona, pero de acuerdo con este post es posible enlazar listener específico mediante el uso de diferentes espacios de nombres.

Quería hacer lo mismo con un searchview y enlazar un QueryTextListener a él, pero me sale el siguiente error:

Cannot find the setter for attribute 'bind:setOnQueryTextListener' with parameter type android.widget.SearchView.OnQueryTextListener. 

Lo que hice en mi ViewModel:

 public class MembersFragmentViewModel extends BaseObservable { private Context context; private MembersAdapter adapter; private RecyclerView recyclerView; public MembersFragmentViewModel(Context context, MembersAdapter adapter, RecyclerView recyclerView) { this.context = context; this.adapter = adapter; this.recyclerView = recyclerView; } public SearchView.OnQueryTextListener getQueryTextListener(){ return new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String query) { List<Contact> filteredModelList = filter(adapter.getContacts(), query); adapter.animateTo(filteredModelList); if(recyclerView != null) recyclerView.scrollToPosition(0); return true; } }; } //Code ... 

Y el xml:

Mi espacio de nombres se declara en la etiqueta de diseño como esto:

 xmlns:bind="http://schemas.android.com/apk/res-auto" 

Y mi SearchView:

 <android.support.v7.widget.SearchView android:id="@+id/searchview" android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/rounded_search_view_background" bind:setOnQueryTextListener="@{viewModel.QueryTextListener}"> </android.support.v7.widget.SearchView> 

Esta es mi etiqueta de datos:

 <data> <variable name="viewModel" type="mypackagename.viewmodel.members.MembersFragmentViewModel"/> </data> 

Muchas gracias por cualquier pista!

One Solution collect form web for “Android Data Binding: no puede encontrar el setter para el atributo”

En mi caso la respuesta era simplemente un nombre de paquete incorrecto.

Mi SearchView se declaró en xml con el siguiente nombre de paquete:

 android.support.v7.widget.SearchView 

Y el paquete que usé en el ViewModel fue

 android.widget.SearchView 
  • No se puede resolver la clase de enlace de datos de Android
  • La vinculación de datos de Android produce "Carpetas de origen generadas en una ubicación incorrecta"
  • Vinculación de datos de Android mediante etiqueta de inclusión
  • La vinculación de datos de Android pasa los argumentos al método onClick
  • Enlaces de datos con oyentes personalizados en la vista personalizada
  • Android Databinding atributo xml duplicado
  • Kotlin y conexión de datos de Android
  • Android vinculación de datos (similar a WPF)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.