Enlace de datos de Android con un adaptador personalizado

Estoy tratando de utilizar las características de vinculación de datos de Android con un adaptador personalizado y un ListView. Tengo problemas para reemplazar el método getView del adaptador personalizado:

 public class ChecksAdapter extends ArrayAdapter<Check> { public ChecksAdapter(Context context, ObservableList<Check> checks) { super(context, R.layout.check, checks); } @Override public View getView(int position, View convertView, ViewGroup parent) { CheckBinding binding = DataBindingUtil.inflate( LayoutInflater.from(getContext()), R.layout.check, parent, false); binding.setCheck(this.getItem(position)); // Return what? } } 

Así que mis preguntas son:

  • ¿Dónde obtengo el elemento View que debo regresar? O en otras palabras, ¿cómo puedo enlazar el objeto a una vista inflada / convertida?
  • ¿Cómo puedo volver a usar convertView cuando uso enlace de datos?
  • ¿Es esta la manera correcta de implementar esto? La guía no es muy clara en ListViews

Aquí está la única referencia de ListViews en la guía:

Si está utilizando elementos de enlace de datos dentro de un adaptador ListView o RecyclerView, puede preferir utilizar:

  ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false); //or ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false); 

De acuerdo con esto , debe devolver binding.getRoot() .

 View getRoot () 

Devuelve la vista más externa en el archivo de diseño asociado con la vinculación. Si este enlace es para un archivo de diseño de combinación, se devolverá la primera raíz en la etiqueta de combinación.

Debe hacer lo siguiente para desplazarse sin problemas.

 @Override public View getView(int position, View convertView, ViewGroup parent) { CheckBinding binding; if(convertView == null) { binding = DataBindingUtil.inflate( LayoutInflater.from(getContext()), R.layout.check, parent, false); convertView = binding.getRoot(); } else { binding = (CheckBinding) convertView.getTag(); } binding.setCheck(this.getItem(position)); convertView.setTag(binding); return convertView; } 
 ItemTickFilterBinding mFilterBinding; if (convertView==null) { mFilterBinding= DataBindingUtil.inflate( LayoutInflater.from(mContext), R.layout.item_tick_filter, parent, false); convertView.setTag(mFilterBinding); } else { mFilterBinding=(ItemTickFilterBinding)convertView.getTag(); } 
  • Incluir etiqueta y dataBinding
  • Cómo configurar un @BindingAdapter con Picasso?
  • ¿Cómo databind a onTextChanged para un EditText en Android?
  • Android 2-Way DataBinding con vista personalizada y Attr personalizado
  • Vinculación de datos de Android y Kotlin
  • ¿Puedo enlazar un mensaje de error a un TextInputLayout?
  • Vinculación de datos: establece la propiedad si no es nula
  • MVVM: Cómo Concat la cadena en clase de modelo?
  • La aplicación de fuente de una línea que utiliza la vinculación de datos de Android-M no funciona
  • ¿Cómo utilizo la nueva biblioteca de enlace de datos de Android para poblar a los hijos de un LinearLayout basado en una colección?
  • Vinculación de datos de Android, no se pueden generar carpetas de vista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.