AutoCompleteTextKraft, um alle Elemente anzuzeigen

Es gibt einen Moment in meiner App, dass ich zwingen muss, alle Artikel in der Vorschlagsliste zu zeigen, egal was der Benutzer eingegeben hat. Wie kann ich das machen?

Ich habe versucht, etwas mit Filterung zu tun, aber für mich als Anfänger-Filterung ist einfach viel zu kompliziert, ich habe versucht, Anfänger-Tutorial für die Filterung ohne Glück zu suchen. Vielleicht gibt es einen einfacheren Weg zu zwingen, alle Vorschläge zu zeigen?

EDIT: Grundsätzlich, was war meine Idee, ist das, wenn der Benutzer etwas, was nicht in der Liste ist, zeigt es alle verfügbaren Optionen, die er haben kann.

Ich habe die beste Möglichkeit gefunden, das Wetter zu überprüfen, das ACTV ist beign gezeigt oder nicht, aber onTextChangeEvent Ich vergleiche den Benutzer typisierten Text mit meiner Liste, und dann, wenn keine Elemente gefunden wurden, zeigen vollständige Liste.

public void onTextChanged(CharSequence s, int start, int before, int count) { final EditText editText = (EditText) findViewById(R.id.vardsUserInput); String strValue = editText.getText().toString().toUpperCase(); String temp; int Cc=0; //my count variable for(int i=0; i<vardi.length; i++) { temp = vardi[i].toUpperCase(); if(temp.startsWith(strValue.toUpperCase())) { Log.d("testing",vardi[i]); Cc++; } } if(Cc == 0) { //Show all the available options textView.showDropDown(); } } 

  • Alle Artikel in AutocompleteTextView anzeigen, ohne Text zu schreiben
  • Wie verwende ich AutoCompleteTextView und fülle es mit Daten aus einer Web-API?
  • Wie beschränken Sie AutoCompleteTextView Dropdown-Dismiss?
  • AutoCompleteTextView zeigt das Ergebnis nicht an, auch wenn der ArrayAdapter aktualisiert wird
  • Wie deaktiviere ich die Rechtschreibprüfung für Android AutoCompleteTextView?
  • IllegalStateException - Unterstützung LoaderManager mit AutocompleteTextView
  • Diakritische / internationale Zeichen in AutoCompleteTextView
  • Schatten entfernen aus AutoCompleteTextView Dropdown
  • 8 Solutions collect form web for “AutoCompleteTextKraft, um alle Elemente anzuzeigen”

    Sie definieren nicht den "Moment", wenn Sie alle Ergebnisse anzeigen möchten, also hoffe ich das passt. Versuche aber so etwas:

     AutoCompleteTextView autoComplete; String savedText; public void showAll() { savedText = autoComplete.getText().toString(); autoComplete.setText(""); autoComplete.showDropDown(); } public void restore() { autoComplete.setText(savedText); } 

    Grundsätzlich, nach 5-6 Stunden des Experimentierens zu verstehen, wie der verdammte Filter funktioniert, schrieb ich meinen eigenen Adapter, der genau das macht was ich will:

      public class burtuAdapteris extends ArrayAdapter<String> implements Filterable { ArrayList<String> _items = new ArrayList<String>(); ArrayList<String> orig = new ArrayList<String>(); public burtuAdapteris(Context context, int resource, ArrayList<String> items) { super(context, resource, items); for (int i = 0; i < items.size(); i++) { orig.add(items.get(i)); } } @Override public int getCount() { if (_items != null) return _items.size(); else return 0; } @Override public String getItem(int arg0) { return _items.get(arg0); } @Override public Filter getFilter() { Filter filter = new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { if(constraint != null) Log.d("Constraints", constraint.toString()); FilterResults oReturn = new FilterResults(); /* if (orig == null){ for (int i = 0; i < items.size(); i++) { orig.add(items.get(i)); } }*/ String temp; int counters = 0; if (constraint != null){ _items.clear(); if (orig != null && orig.size() > 0) { for(int i=0; i<orig.size(); i++) { temp = orig.get(i).toUpperCase(); if(temp.startsWith(constraint.toString().toUpperCase())) { _items.add(orig.get(i)); counters++; } } } Log.d("REsult size:" , String.valueOf(_items.size())); if(!counters) { _items.clear(); _items = orig; } oReturn.values = _items; oReturn.count = _items.size(); } return oReturn; } @SuppressWarnings("unchecked") @Override protected void publishResults(CharSequence constraint, FilterResults results) { if(results != null && results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } }; return filter; } } 

    Und es ist einfach zu bedienen, ersetzen Sie einfach Original-Adapter mit diesem:

     final burtuAdapteris fAdapter = new burtuAdapteris(this, android.R.layout.simple_dropdown_item_1line, liste); 

    In meinem Fall liste ist: ArrayList<String> liste = new ArrayList<String>();

    Methode kraftvoll zeigen Dropdown-Liste.

    Sie müssen requestFocus () anrufen; Um die Tastatur anzuzeigen, da die Tastatur nicht auftaucht.

     autocomptv.setOnTouchListener(new OnTouchListener() { @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(View paramView, MotionEvent paramMotionEvent) { // TODO Auto-generated method stub autocomptv.showDropDown(); autocomptv.requestFocus(); return false; } }); 

    Das funktioniert für mich perfekt, das ist ein einfacher Weg, um das Problem zu lösen:

     final ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_dropdown_item_1line, usernameLists); etUsername.setThreshold(1); etUsername.setAdapter(adapter); etUsername.setOnTouchListener(new View.OnTouchListener() { @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(View paramView, MotionEvent paramMotionEvent) { if (usernameLists.size() > 0) { // show all suggestions if (!etUsername.getText().toString().equals("")) adapter.getFilter().filter(null); etUsername.showDropDown(); } return false; } }); 

    Wenn du die Anregungen sofort zeigen willst, dann musst du enoughToFilter() überschreiben, um es immer wieder zu geben. Um zu ignorieren, was als Texteingabe gegeben wird, müssen Sie performFiltering("", 0) mit einem leeren performFiltering("", 0) . Die AutoCompleteTextView zeigt dann alle Vorschläge an.

    Dies ist eine Lösung, die ich aus anderen StackOverflow-Beiträgen kombiniert habe:

     public class InstantAutoComplete extends android.support.v7.widget.AppCompatAutoCompleteTextView { public InstantAutoComplete(Context context) { super(context); } public InstantAutoComplete(Context context, AttributeSet attrs) { super(context, attrs); } public InstantAutoComplete(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean enoughToFilter() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); if (focused && getAdapter() != null) { performFiltering("", 0); } } } 

    Als "ArtOfWarfare" vorgeschlagen, können Sie nur Sub-Klasse und Override performFiltering ():

     public class My_AutoCompleteTextView extends AutoCompleteTextView { public My_AutoCompleteTextView(Context context) { super(context); } public My_AutoCompleteTextView(Context context, AttributeSet attrs) { super(context, attrs); } public My_AutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void performFiltering(CharSequence text, int keyCode) { super.performFiltering("", 0); } } 

    Das ist was für mich gearbeitet

      public class CustomAutoCompleteTextView extends AutoCompleteTextView { public CustomAutoCompleteTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean enoughToFilter() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); if (focused) { performFiltering(getText(), 0); } } @Override public boolean onTouchEvent(MotionEvent event) { this.showDropDown(); return super.onTouchEvent(event); } } 

    Es ist eigentlich noch einfacher als Sam aufgeführt. Wann immer du alles zeigen willst, mach einfach:

     performFiltering("", 0); 

    Wenn die Filterung beendet wird, zeigt sie automatisch den Dropdown mit allen sichtbaren Elementen an.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.