Le problème est le même que pas la programmation avec MVVMCross, mais je me demande s'il y a une solution « multi-plateforme »:MVVMCross peut-il modifier le sélecteur lorsque vous cliquez sur ImageButton dans ListView?
Lorsque vous utilisez un ImageButton sur un MvxBindableListView (ou un ListView), nous devons mettre des options pour pour utiliser une action sur ce bouton:
<ImageButton
...
android:focusable="false"
android:clickable="true"
...
local:MvxBind="'Click':{'Path':'Command1'}}"
/>
Avec ces paramètres, les boutons réagissent sur le "Command1". Mais le problème est que le "sélecteur visuel" de ListView ne change pas.
Donnons un exemple:
Lorsque vous avez 5 lignes dans votre ListView, et le premier est sélectionné. Je touche l'ImageButton de la 3ème rangée, le "Command1" va réagir (avec le 3ème item du ListView) mais le sélecteur restera sur la première rangée.
Ainsi, dans Android, nous devons mettre une sorte de code comme ceci: Avec ce morceau de code
_imagebutton.Click += (object sender, EventArgs eventsArgs) =>
{
View v = ...
MvxBindableListView l = ...
int p = l.GetPositionForView(...);
l.PerformItemClick(..., p, p);
};
l'élément droit est sélectionné et que le comportement est correct (tant que je ne suis pas voulez déclencher un événement réel avec ItemClick). Mais cette solution est la "façon Android" et pas vraiment crossplatform (et je vous laisse imaginer le code terrible pour initialiser tout ça)
Quelqu'un a une meilleure solution?
Hugo
Salut Stuart, Merci encore pour votre réponse rapide. Il semble qu'Android ne réagisse pas à la valeur _adapterView.SetSelection ((int)). C'est pourquoi j'ai dû faire un PeformItemClick sur ListView avec la bonne position. Néanmoins, votre solution est plus jolie car elle est nativement liée au ListView. Je vais essayer d'hériter de MvxBindableListView quand j'aurai le temps (le délai arrive vite!) – hugoterelle
AdapterView semble répondre à SetSelection ici - mais peut-être cela dépend de ce que votre "sélecteur visuel" est. Je pense qu'il y a une différence entre state_selected et state_pressed - mais je ne suis pas un expert en la matière! – Stuart