MvxListView erstellt eine Bindung für das Vorlagenlayout aus dem Code

8

Sagen wir, ich habe ein einfaches Layout mit einer MvxListView:

%Vor%

Das Layout meiner Artikelvorlage lautet wie folgt:

%Vor%

Ich möchte die Bindungen für die zwei textview-Elemente in meinem itemtemplate aus dem Code dahinter angeben. Ich bin nicht sicher, wie es am besten geht. Ich denke, ich könnte etwas "OnViewModelSet" in der Ansicht Code hinter der MvxListView tun. Ich habe folgendes versucht, aber es funktioniert offensichtlich nicht, weil es die Kontrolle nicht finden kann.

%Vor%

Mein anderer Gedanke war, das oncreate für die itemtemplate-Ansicht irgendwie abzufangen, aber OnCreate wird nicht aufgerufen, wenn ich eine View-Code-Datei für mein itemtemplate-Layout erstelle.

    
Sergio DeAlbuquerque 02.02.2014, 20:43
quelle

1 Antwort

15

Um die Bindungen im Code zu machen, ist es wahrscheinlich am besten:

  1. implementiert eine benutzerdefinierte MvxListViewItem
  2. implementiert eine benutzerdefinierte MvxAdapter , um das benutzerdefinierte Listenansichtselement
  3. zurückzugeben
  4. implementiert eine benutzerdefinierte MvxListView , um die benutzerdefinierte MvxAdapter zu verwenden

Nicht getestet, aber der Code dafür ist ungefähr:

1. Implementiere eine benutzerdefinierte MvxListViewItem

%Vor%

2. Erstelle eine benutzerdefinierte MvxAdapter

In diesem Override CreateBindableView

%Vor%

original: Ссылка

3. Implementieren Sie eine benutzerdefinierte MvxListView für die Verwendung des Adapters

Dies sollte so einfach sein wie:

%Vor%

Solange sich dies in Ihrer Hauptbenutzeroberflächen-Assembly befindet, sollte dies in Ihrer axml als

verwendet werden können %Vor%

Wenn sich CustomListView nicht in Ihrer Hauptbenutzeroberflächen-Assembly befindet, gibt es einige Tricks, um MvvmCross dazu zu bringen, sie während Ihres Setup zu übernehmen - siehe Bereitstellung von benutzerdefinierten Android View Assemblies in Ссылка

Dies ist der beste Weg, dies zu tun (IMO) - aber wenn Sie wollten, dann könnten Sie es in weniger Code tun, indem Sie einfach die Bindungen innerhalb des benutzerdefinierten Adapters anwenden und diesen Adapter in OnCreate in Ihrem setzen Activity

    
Stuart 02.02.2014, 21:03
quelle