Ich habe eine Autocomplete-Textansicht zur Verfügung gestellt, um dem Benutzer Vorschläge anzuzeigen. Basierend auf dem vom Benutzer ausgewählten Element, erhalte ich die ID des Elements und verwende sie in Datenbankseite . Jetzt ist mein Problem, den Benutzer einzuschränken, um Auswahl nur von der Autovervollständigung-Textansicht zu treffen (d. H. Der Benutzer sollte seinen eigenen Text nicht eingeben). Es ist eine Kundenanforderung. Wie macht man das?Android: Benutzer nur zur Auswahl von Autovervollständigung Textansicht einschränken
Antwort
Hier ist eine ziemlich einfache Lösung:
Sie eine Variable erstellen können den eingestellten Wert zu speichern, indem setOnItemClickListener
in Ihre AutoCompleteTextView
. Dann können Sie null
diesen Wert immer wenn ein Benutzer das Feld eingibt, indem Sie TextWatcher
zu ihm hinzufügen. Schließlich können Sie validieren, dass Ihre Variable nicht null ist, bevor Sie fortfahren.
aber wenn der Benutzer eingegebene Wert, der in der Liste erscheint die 'my_var' sollte nicht null sein! – dvrm
@dvrm dann müssen Sie den Adapter nach dem Text suchen, den der Benutzer eingegeben hat, und den Wert aus dem Adapter auf jedem onTextChanged auswählen. Nehmen wir an, der Benutzer tippt "name" in die actv ein und sucht dann nach "n", "na", "nam" und "name". Wenn Sie eine Übereinstimmung erhalten, wählen Sie diesen Wert. Auf diese Weise wird das Element in der Liste ausgewählt, ob sie darauf klicken oder nicht, solange der Text – regretoverflow
brilliante Anwendung des Geistes entspricht. Vielen Dank. –
Ok Ich nehme an, Sie möchten die Eingabe des Benutzers auf die Texte beschränken, die in der Liste der in der Vorschlagsliste aufgeführten Artikel enthalten sind. wenn
Zum Beispiel haben Sie:
- One
- Zwei
- Drei
dann der Benutzer nur für das erste Zeichen "O" und "T" geben könnte. Und so weiter nach dem zuvor eingegebenen Text.
Um dies zu erreichen Sie die setFilters Methode der Textview nutzen können:
editBox = (TextView) findViewById(R.id.editBox);
editBox.setFilters(getFilters());
editBox.addTextChangedListener(this);
editBox.setOnFocusChangeListener(this);
Zusätzlich würden Sie wahrscheinlich brauchen die Text ändern Zuhörer und Fokus Zuhörer zu reagieren und aktualisieren Sie die gefilterten Liste wenn ein neues Zeichen eingegeben wird ... plus um den Filter zu aktualisieren. Hier
ist ein Beispiel für Dezimalzahl Filter ich an einem Projekt verwendet haben:
protected InputFilter[] getFilters()
{
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter()
{
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
{
// limit input to digits and decimal/thousand separator only
// in case thousand separator is pressed, change it to decimal
// separator instead
String output = "";
if (number.isFocused())
{
for (int i = start; i < end; i++)
{
char c = source.charAt(i);
if (isDecimalOrThousandSeparator(c))
{
output = output + Character.toString(decimalSeparator);
}
else if (Character.isDigit(c))
{
output = output + Character.toString(c);
}
}
return output == "" ? null : output;
}
return null;
}
};
return filters;
}
Ich habe zufällig eine solche Anforderung für ein Projekt, an dem ich arbeite, benötigt, und ich werde euch teilen, wie ich das benötigte implementiert habe.
Ich habe einen Listener für den Fokuswechsel für die Auto-Vervollständigen-Textansicht hinzugefügt und überprüft, wenn der Fokus des Benutzers den Fokus von der Autovervollständigung geändert hat, und die Situation direkt bearbeitet.
autoTextViewCountry.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(!b) {
// on focus off
String str = autoTextViewCountry.getText().toString();
ListAdapter listAdapter = autoTextViewCountry.getAdapter();
for(int i = 0; i < listAdapter.getCount(); i++) {
String temp = listAdapter.getItem(i).toString();
if(str.compareTo(temp) == 0) {
return;
}
}
autoTextViewCountry.setText("");
}
}
});
Also meine Implementierung ist: Wenn der eingegebene Text in dem Array Adapter nicht existiert dann auf Fokus leeren Sie die Textansicht geändert, und später, wenn zur nächsten Stufe der Mitsprache Registrierung fortfahren, prüfen Sie, ob diese Textansicht ist leer oder nicht.
Hoffe dieser Ansatz hilft jemandem.
Glückliche Kodierung.
NiceAutoCompleteTextView werden Ihnen die Möglichkeit geben, zu prüfen, ob eine Auswahl aus dem Dropdown-Popup gemacht wurde, von isSelectionFromPopup()
- 1. Wie man Kugeln zur Textansicht in Android
- 2. Hinzufügen von Textansicht zur Oberflächenansicht
- 3. Einschränken der Zelle zur Eingabe nur numerischer Werte in ngHandsontable
- 4. Einschränken Android App nur Telefon-Problem
- 5. Android Textansicht
- 6. Disable ListBox Auswahl durch Benutzer-Schnittstelle nur
- 7. Android Textansicht
- 8. Regex zur Auswahl nur Pattern-Match-Dateien
- 9. einschränken Drive Letter Auswahl nach Art
- 10. Android Textansicht Sonderzeichen Ausgabe
- 11. android Textansicht Größe riesig
- 12. Android Textansicht und Menü
- 13. Benutzer zur Eingabe nur von Zahlen oder A-Z?
- 14. Nur-Text-Autovervollständigung in Atom (Github)
- 15. Formularfelder in CreateView einschränken, um Aktuellen Benutzer nicht als Auswahl in Vorlage anzuzeigen
- 16. Bash Angebot nummerierte Ergebnisse zur Auswahl an Benutzer
- 17. Android Textansicht mit chip type auswählbaren Boxen
- 18. Bildlaufansicht für Textansicht in Android
- 19. Einfügen von Textansicht in Edittext in Android?
- 20. Textansicht nicht Einstellung von Text in Android
- 21. Android Textansicht und Bearbeiten von Textdaten
- 22. Einschränken von PHP-Sitzungsvariablen
- 23. Einschränken der Benutzer auf google map
- 24. einschränken Seitenansicht Zugriff auf bestimmte Benutzer/Kunden
- 25. Benutzer auf Produkt in Magento einschränken
- 26. Fade unten einer Textansicht android
- 27. Android Textansicht Breite in RelativeLayout
- 28. Einschränken des WCF-Dienstzugriffs auf nur localhost
- 29. Prise Zoomen auf Textansicht android
- 30. Scroll NSTableView zur Auswahl
Ihre Frage Aufruf ist nicht klar. Welche Auswahl möchten Sie einschränken/wo sonst können die Nutzer eine Auswahl treffen? – stoilkov
Versuchen Sie, den Benutzer auf das Bearbeiten von textView einzuschränken, sodass er nur eines der Elemente in der Autocomplete-Auswahl auswählen kann? – Drejc
@Drejc ja das ist, was ich benötigt –