android - hacer - Mostrar todos los elementos en AutocompleteTextView sin escribir texto
hacer un buscador en android studio (6)
MEJOR SOLUCIÓN AQUÍ
No necesita personalizar su AutoCompleteTextView
. En su lugar, simplemente llame a autoCompleteTextView.showDropDown()
Siempre que lo necesite ..... saludos :)
Tengo un AutocompleteTextView y funciona bien. Cuando escribo una palabra, se muestra el resultado relevante, pero quiero mostrar todos los elementos sin escribir ninguna palabra en AutocompleteTextView. Cómo puedo hacer eso.
Esto funciona a mi perfección, esta es una manera fácil de resolver el problema:
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;
}
});
Esto funciona para mi:
agregue a su objeto los siguientes métodos de evento:
myView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
myView.showDropDown();
}
});
myView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myView.showDropDown();
return false;
}
});
Necesita extender AutocompletarTextView,
"Cuando el umbral es menor o igual a 0, se aplica un umbral de 1".
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.AutoCompleteTextView;
public class InstantAutoComplete extends AutoCompleteTextView {
public InstantAutoComplete(Context context) {
super(context);
}
public InstantAutoComplete(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
}
public InstantAutoComplete(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
}
@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);
}
}
}
en xml
<AutoCompleteTextView ... /> to <your.namespace.InstantAutoComplete ... />
EDIT 1
Crea una nueva clase llamada InstantAutoComplete y luego coloca este código en la clase.
En su diseño xml use esta clase como
luego encuentra este widget en tu actity (método onCreate).
necesita llamar a requestFocus (); para mostrar el teclado, de lo contrario el teclado no aparece.
Método de mostrar a la fuerza la lista desplegable.
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;
}
});
utilizar esta :
text.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
text.showDropDown();
return false;
}
});