¿Cómo puedo enlazar a `ItemClick` para un` MvxLinearLayout`?

Tengo un ScrollView que envolvió originalmente dos controles de MvxListView .

Tener controles ListView en un ScrollView no es compatible con Android, lo cual tiene sentido, ya que ambos intentan llenar la altura de los padres y proporcionar su propia lógica de desplazamiento.

Lo que quiero es dos listas de unscrollable con su altura completa dentro de mi ScrollView . ListView que MvxListView amplía no admite esto sin hackear la altura manualmente.

La razón por la que quiero esto es porque tengo dos listas separadas que he obligado a separar las fuentes y ambos tienen su propio encabezado. Necesito que todo esto sea desplazable dentro de un ScrollView .

Entonces encontré MvxLinearLayout que es un LinearLayout que tiene una propiedad ItemSource que puedo enlazar. Funciona excelente, muestra mis artículos y consigue la altura completa de todos los artículos así que puedo enrollar mis dos listas en mi ScrollView . El problema es que no parece tener una propiedad ItemClick , así que no tengo una forma de obtener la entrada del usuario de mi lista.

¿Alguien sabe una manera limpia de hacer esto de una manera ligable? No quiero adjuntar los controladores onItemClick en mi código. ¿Hay otro control de MvvmCross que pueda hacer lo que quiero?

Puede extender MvxLinearLayout para apoyar ItemClick :

 public class MvxClickableLinearLayout : MvxLinearLayout { public MvxClickableLinearLayout(Context context, IAttributeSet attrs) : this(context, attrs, new MvxClickableLinearLayoutAdapter(context)) { } public MvxClickableLinearLayout(Context context, IAttributeSet attrs, MvxClickableLinearLayoutAdapter adapter) : base(context, attrs, adapter) { var mvxClickableLinearLayoutAdapter = Adapter as MvxClickableLinearLayoutAdapter; if (mvxClickableLinearLayoutAdapter != null) { mvxClickableLinearLayoutAdapter.OnItemClick = OnItemClick; } } public ICommand ItemClick { get; set; } public void OnItemClick(object item) { if (ItemClick != null && ItemClick.CanExecute(item)) { ItemClick.Execute(item); } } } 

Adaptador:

 public class MvxClickableLinearLayoutAdapter : MvxAdapterWithChangedEvent, View.IOnClickListener { public delegate void ItemClickDelegate(object item); public ItemClickDelegate OnItemClick; public MvxClickableLinearLayoutAdapter(Context context) : base(context) { } public void OnClick(View view) { var mvxDataConsumer = view as IMvxDataConsumer; if (mvxDataConsumer != null && OnItemClick != null) { OnItemClick(mvxDataConsumer.DataContext); } } protected override View GetView(int position, View convertView, ViewGroup parent, int templateId) { View view = base.GetView(position, convertView, parent, templateId); view.SetOnClickListener(this); return view; } } 

Ahora puedes enlazar a ItemClick como harías con ListView :

 local:MvxBind="ItemClick SomeCommand" 

Debe agregar una vinculación de clic a los elementos separados dentro del diseño. Puede agregar un clic a cualquier diseño como este:

 <RelativeLayout android:background="?android:attr/selectableItemBackground" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/relativeLayout1" local:MvxBind="Click SomeCommand"> 

¿Ha intentado especificar una plantilla de elemento para MvxLinearLayout? Por ejemplo, local:MvxItemTemplate="@layout/item_template" ? Puede configurar el enlace MvvmCross Click dentro de la plantilla de elemento en los controles para los que desea manejar los clics.

  • ¿Por qué tomar una aplicación vacía de Xamarin Android alrededor de 10mb de espacio?
  • MapWithOverlaysActivity - No se pudo determinar $ (TargetFrameworkVersion)
  • FormsAppCompatActivity y MasterDetailPage: no hay barra de herramientas
  • No se pueden crear archivos en Android con Xamarin
  • Recargar datos en la pestaña seleccionada en un fragmento utilizando el paginador de vistas
  • Cómo arreglar los errores de compilación de Xamarin.Android con proguard habilitado?
  • Cómo convertir Android.Resource.Color a Android.Graphics.Color
  • Toma la foto falla en los teléfonos Samsung
  • Xamarin vs Titanium Appcelerator?
  • Xamarin Forms Navegación de página MasterDetail causando un accidente en android , Funciona en iOS y UWP
  • Vinculación de OxyPlot a través de MVVMCross en Xamarin.Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.