Ich habe ein Problem, wobei bei jedem Tastendruck vom Benutzer die AutoCompleteTextView schnell versteckt und wieder erscheint (mit einem aktualisierten Satz von Werten).MvxAutoCompleteTextView Dropdown öffnet sich wieder bei jedem Tastendruck
Bitte schlagen Sie vor, wo mein Problem sein könnte und ob Sie weitere Probleme mit dem unten stehenden Code sehen.
Bindung in der Ansicht:
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 Layout:
<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatAutoCompleteTextView
android:id="@+id/EmailAutoCompleteTextView"
android:layout_marginTop="@dimen/PaddingBetweenUserInputFields"
android:completionThreshold="1"
android:inputType="textEmailAddress" />
Ansicht Modell-Code:
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));
}
}
Ich benutze MvvmCross 4.0 (Upgrade ist keine Option).
NB: I versucht, eine ObservableCollection
anstelle eines IList
und zu Entfernen/Hinzufügen von Elementen, um es (nicht neu zuweisen die Sammlung selbst) verwendet, aber nach, dass der Setter für CurrentEmailEntry
gestoppt Werte, nachdem der Benutzer eingegeben das erste Zeichen in die Aufnahme Textvorschau. Der Code innerhalb MvxFilteringAdapter
scheint zu warten, auf ein Reset-Ereignis warten.