Je ne parviens pas à lier ItemClick de MvxRecyclerView (ou de son adaptateur) à une commande de mon ViewModel à l'aide de l'API Fluent. Cela fonctionne si je mets à la fois ItemsSource et ItemClick dans le XML donc je ne suis pas intéressé par une telle solution. J'ai utilisé cette publication comme un excellent guide (How to use the MvvmCross fluent API to bind a RecyclerView item's TextView to a property of its ViewModel on Android?) et tout cela fonctionne, sauf que je ne peux pas lier ItemClick sur MvxRecyclerView (ou l'adaptateur) à une commande de MainViewModel qui me mènera au fragment suivant (ItemsSource fonctionne comme un charme mais c'est une propriété et non une commande!).Liaison API MvxRecyclerView Fluent
Par souci de concision, je ne vais pas copiant le code du message original (How to use the MvvmCross fluent API to bind a RecyclerView item's TextView to a property of its ViewModel on Android?) Supposons donc que le MainViewModel de ce poste a été amélioré avec une commande ShowItemCommand en tant que tel:
public class MainViewModel : MvxViewModel
{
private IEnumerable<ViewModelItem> _viewModelItems;
public IEnumerable<ViewModelItem> ViewModelItems
{
get { return _viewModelItems; }
set { SetProperty(ref _viewModelItems, value); }
}
public MvxCommand<ViewModelItem> ShowItemCommand
{
get
{
return new MvxCommand<ViewModelItem>(selectedItem =>
{
ShowViewModel<ViewModelItem>
(new { itemId = selectedItem.Id });
});
}
}
}
et tout le reste a été mis en œuvre selon le message référencé.
Donc maintenant, en plus de ItemsSource, je veux câbler ItemClick sur le MvxRecyclerView (ou l'adaptateur) à la commande. La raison pour laquelle ils sont interchangeables est que MvxRecyclerView transmet ces commandes à l'adaptateur.
Apparemment, cela devrait fonctionner ... mais il ne fonctionne pas:
adapter.ItemClick = ViewModel.ShowItemCommand;
Cela ne fonctionne pas non plus:
set.Bind(recyclerView).For(v => v.ItemClick).To(vm => vm.ShowItemCommand);
Je suis d'accord avec vous. Ma mise en œuvre initiale avait seulement un MvxRecyclerView et lié à ItemsSource et ItemClick en XML. Et cela a bien fonctionné. Le remplacement de ces liaisons avec l'API Fluent fonctionne très bien. Mais je suis allé plus loin et (selon la note référencée) roulé mon propre MvxRecyclerAdapter et MvxRecyclerViewHolder. Dans cette implémentation, ItemsSource fonctionne mais ItemClick ne fonctionne pas. En fin de compte, je vise à avoir accès à MvxViewViewHolder afin d'implémenter la mise en évidence/multi-choix pour la barre d'action contextuelle. – Igor
@Igor, vous devez vous assurer que vous attribuez la commande click pour votre adaptateur à votre 'ViewHolder' personnalisé, voir mon [réponse pour l'exemple de la mise en œuvre] (http://stackoverflow.com/questions/42938112/mvxrecyclerview- fluent-api-binding # answer-43055796). – Plac3Hold3r