Я пытаюсь сделать AutoCompleteTextView, который автоматически заполняет автозаполнение, когда в отфильтрованном списке осталось только 1 вариант.Android AutocompleteTextView заполняется, когда один параметр оставлен
Вот что у меня до сих пор:
import android.content.Context;
import android.text.Editable;
import android.text.Selection;
import android.text.SpannableString;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.MultiAutoCompleteTextView;
public class InstantAutoComplete extends AutoCompleteTextView {
private final static String TAG = "InstantAutoComplete";
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
protected void replaceText(CharSequence text) {
Log.i(TAG, "REPLACING TEXT");
super.replaceText(text);
}
@Override
public CharSequence convertSelectionToString(Object obj) {
//This needs to return a Spanned object
return new SpannableString(super.convertSelectionToString(obj));
}
@Override
public void onFilterComplete(int count) {
Log.i(TAG, "Count: " + count);
super.onFilterComplete(count);
if(count == 1) {
clearListSelection();
Log.i(TAG, "Is showing: " + isPopupShowing());
setListSelection(0);
Log.i(TAG, "Selected: "+getListSelection());
performCompletion();
}
}
}
До сих пор я понял, что я могу проверить, если есть слева в выпадающем меню в onFilterComplete
только один пункт. Однако за этим я застрял. По какой-то причине setListSelection
ничего не делает. Если бы это было так, я мог бы использовать это, чтобы установить выбранный элемент, а затем performCompetion
должен работать как обычно. Кроме того, я не уверен, что setListSelection относится к отфильтрованному списку или к оригинальному более длинному списку; но это следующая проблема для решения.
Итак, любая помощь по поводу почему setListSelection
не работает, или о том, как решить эту проблему в целом оценили!
Вы должны вызвать 'showDropDown();' перед вызовом этого 'onCommitCompletion', иначе он не будет работать, поскольку фреймворк проверяет, открыто ли popupwindow и нет – k0sh