在textchange上更新autocompletetextview中的建议列表索引

时间:2017-09-03 07:11:38

标签: android autocompletetextview

我正在使用带有arraylist值的自动完成textview [aaa0,aaa1,... aaa100,aab0,aab1,...,aab100],我输入值' aa'然后向下滚动到下一个10,即。' aa10'然后我输入值' aab'建议清单从第10个值开始,即' aab10'。 我必须向上滚动才能看到第一个值,即' aab0'。我希望在更改搜索文本时显示建议列表的第一个值。suggestion list screenshot

1 个答案:

答案 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);
      }