我正在使用带有arraylist值的自动完成textview [aaa0,aaa1,... aaa100,aab0,aab1,...,aab100],我输入值' aa'然后向下滚动到下一个10,即。' aa10'然后我输入值' aab'建议清单从第10个值开始,即' aab10'。 我必须向上滚动才能看到第一个值,即' aab0'。我希望在更改搜索文本时显示建议列表的第一个值。suggestion list screenshot
答案 0 :(得分:0)
您需要扩展 AutoCompleteTextView 类 并覆盖 onFilterComplete 方法 你必须解雇并再次显示下拉列表以刷新列表视图。
另外我建议不要扩展 AutoCompleteTextView 扩展 android.support.v7.widget.AppCompatAutoCompleteTextView 明显更好的支持
这里是代码
package your.package.name;
import android.content.Context;
import android.util.AttributeSet;
import android.support.v7.widget.*;
public class CustomAutoCompleteTextView extends AppCompatAutoCompleteTextView {
public CustomAutoCompleteTextView(Context context) {
super(context);
}
public CustomAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void onFilterComplete(int count) {
super.onFilterComplete(count);
//show and dismiss the drop down to refresh the list in it
this.dismissDropDown();
this.showDropDown();
}
}
修改强>
您还可以使用AutoCompleteTextView.setListSelection()方法滚动到顶部。 而不是在每个过滤器上解雇和显示DropDown 哪个更有效率。
@Override
public void onFilterComplete(int count) {
super.onFilterComplete(count);
//set list selection to 0
if(getListSelection() != 0)
this.setListSelection(0);
}