2012-05-11 14 views
2

我的鑄件存在問題。 首先我舉一個例子,如何做的自動完成自定義適配器沒有MVVM在MonoDroid的:https://github.com/BitStab/Monodroid-Custom-Auto-Complete/blob/master/MonoAndroidApplication1/CustomerAdapter.cs未在視圖模型上使用Java.Lang.Object的自動完成MVVM和Java Castings

現在,我會嘗試這MVVMCross,但要做到這一點,我會通過的java.lang致以視圖模型。目的。這會破壞它的便攜性。我正在尋找解決方法,因爲我不是mvvm的專家,我需要幫助。

我開始做一些新的類在mvvmCross Bindigs,你可以在這裏找到:https://github.com/BitStab/MvvmCross/tree/master/Cirrious/Cirrious.MvvmCross.Binding/Android/Views

我試圖使它儘可能通用,但我需要從我個人投的方法C#對象到Java.Lang.Object。 有沒有一種方法來做到這一點,而不擴展我的ViewModel? 如果有人有另一種想法,我很樂意獲得靈感!

感謝您的幫助!

回答

2

如果你想要可移植的代碼,那麼你肯定不希望Java.anything在你的ViewModels附近的任何地方。

恐怕我無法真正遵循CustomerAdapter示例代碼 - 您的過濾器和發佈方法看起來不太正確。此外,在我發現的大多數Java示例之後,我遇到了一些問題 - 從我所看到的,我不認爲AutoCompleteTextView上的線程模型是理想的 - 它會阻塞太久的線程(恕我直言)。

然而,在谷歌圖書API樣本一些黑客攻擊後,然後我創建了一個樣本 - 見視頻:

OneTwoThree

這示例使用新的alpha數據綁定MvvmCross框架內的自動完成類和適配器RK。這可能是因爲這些類從來沒有真正使裁員成爲全職框架成員 - 在這種情況下,他們可以生活在一些外部庫中。

基本功能使用數據綁定在3個新的屬性:

  • PartialText - 這是部分字符串 - 從視圖發送到視圖模型
  • 的ItemsSource - 這是可用於設定電流項目所供給的PartialText - 從視圖模型發送給查看
  • SelectedObject - 這是當前所選的項目 - 從視圖發送到視圖模型

您可以在結合XML作爲看看這些設置:因爲Android的線程模型很重要的是在PartialText每一個變化是由最終的信號變化的ItemsSource滿足

<Mvx.MvxBindableAutoCompleteTextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    local:MvxItemTemplate="@layout/listitem_book" 
    local:MvxBind="{'Text':{'Path':'EnteredText','Mode':'TwoWay'}, 
    'ItemsSource':{'Path':'AutoCompleteSuggestions'}, 
    'PartialText':{'Path':'CurrentTextHint'}, 
    'SelectedObject':{'Path':'CurrentBook'}}" 
    /> 

注意 - 這應該是一個對象集合中的單個更改而不是很多小的更改。

這個初始樣本代碼是:https://github.com/slodge/MvvmCross/tree/master/Sample%20-%20SimpleDialogBinding/SimpleBinding/DroidAutoComplete

注意,此示例使用「簡單綁定」,而不是完整的MVX框架,因此有稍微多線程擔心在視圖模型。

的結合視圖及其適配器都不是簡單的代碼來跟隨 - 綁定代碼在本質上是相當抽象的 - 但他們可以發現:


如果您正在做任何網絡鏈接,那麼從長遠來看,我認爲實現新的自動完成視圖可能更好,而不是今天使用內置的Android!

+1

親愛的SO--對於這個答案感到抱歉,但是在週五晚上1點40分的時候,我可能需要整個週末來解釋這個數據綁定是如何工作的! – Stuart