【发布时间】:2017-09-08 11:50:25
【问题描述】:
我有一个问题,即在用户每次按键时,AutoCompleteTextView 都会快速隐藏并再次出现(使用一组更新的值)。
请建议我的问题可能出在哪里以及您是否发现以下代码有任何其他问题。
在视图中绑定:
bindingSet
.Bind(emailAutoCompleteTextView)
.For(t => t.Text)
.To(vm => vm.Email);
bindingSet
.Bind(emailAutoCompleteTextView)
.For(t => t.PartialText)
.To(vm => vm.CurrentEmailEntry);
bindingSet
.Bind(emailAutoCompleteTextView)
.For(t => t.ItemsSource)
.To(vm => vm.CurrentEmailAutoCompleteSuggestions);
AXML 布局:
<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatAutoCompleteTextView
android:id="@+id/EmailAutoCompleteTextView"
android:layout_marginTop="@dimen/PaddingBetweenUserInputFields"
android:completionThreshold="1"
android:inputType="textEmailAddress" />
查看型号代码:
private string _currentEmailEntry;
public string CurrentEmailEntry
{
get
{
return _currentEmailEntry;
}
set
{
_currentEmailEntry = value;
if (value == string.Empty)
{
_currentEmailEntry = null;
}
CurrentEmailAutoCompleteSuggestions = _emailAutoCompleteList
.Where(email => email.StartsWith(_currentEmailEntry, StringComparison.OrdinalIgnoreCase))
.ToArray();
RaisePropertyChanged(nameof(CurrentEmailEntry));
}
}
private static readonly string[] _emailAutoCompleteList = {"Gordon", "Gordy", "Go", "Freeman", "Is", "Alive"};
private IList<string> _currentEmailAutoCompleteSuggestions = _emailAutoCompleteList.ToList();
public IList<string> CurrentEmailAutoCompleteSuggestions
{
get { return _currentEmailAutoCompleteSuggestions; }
set
{
if (ReferenceEquals(_currentEmailAutoCompleteSuggestions, value))
return;
_currentEmailAutoCompleteSuggestions = value;
RaisePropertyChanged(nameof(CurrentEmailAutoCompleteSuggestions));
}
}
我使用 MvvmCross 4.0(不能升级)。
注意:我尝试使用 ObservableCollection 而不是 IList 并向其中删除/添加项目(不重新分配集合本身),但之后 CurrentEmailEntry 的设置器在用户键入后停止接收值第一个字符进入文本视图。 MvxFilteringAdapter 中的代码似乎一直在等待重置事件。
【问题讨论】:
标签: android xamarin mvvmcross autocompletetextview