如果你想要可移植的代碼,那麼你肯定不希望Java.anything在你的ViewModels附近的任何地方。
恐怕我無法真正遵循CustomerAdapter示例代碼 - 您的過濾器和發佈方法看起來不太正確。此外,在我發現的大多數Java示例之後,我遇到了一些問題 - 從我所看到的,我不認爲AutoCompleteTextView上的線程模型是理想的 - 它會阻塞太久的線程(恕我直言)。
然而,在谷歌圖書API樣本一些黑客攻擊後,然後我創建了一個樣本 - 見視頻:
這示例使用新的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!
親愛的SO--對於這個答案感到抱歉,但是在週五晚上1點40分的時候,我可能需要整個週末來解釋這個數據綁定是如何工作的! – Stuart