2011-03-09 59 views
1

我有一个关于Android 2.2上的AutocompleteView的建议项的奇怪问题。我正在使用自定义的ArrayAdapter和Filter类实现。自动完成项目消失

enter image description here

当我输入第三个字符的下拉消失:

当我键入到AutocompleteView的建议下拉作为显示在下面的屏幕截图进入两个字符后弹出

enter image description here

进入第四个字符后,建议下拉再次显示:

enter image description here

我不明白为什么输入字符数不均匀时下拉消失。

在调试过程中,我注意到当输入偶数个字符时,getView()会被调用两次,但是对于不均匀量,一次只能调用一次。这可能是错误行为的原因吗?

这里是我的源代码:

public class AutoCompleteActivity extends Activity { 

protected AutoCompleteTextView autoCompleteView; 
protected AutoCompleteAdapter suggsAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.autocomp); 

    autoCompleteView = (AutoCompleteTextView) findViewById(R.id.autocomplete); 
    autoCompleteView.setAdapter(new AutoCompleteAdapter(this, android.R.layout.simple_dropdown_item_1line, new String[1])); 
} 

private class AutoCompleteAdapter extends ArrayAdapter implements Filterable { 

    protected LayoutInflater mInflater; 
    protected Filter filter; 

    public AutoCompleteAdapter(Context context, int textViewResourceId, String[] items) { 
     super(context, textViewResourceId, items); 
     filter = new SuggestionsFilter(); 
     mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      v = mInflater.inflate(android.R.layout.simple_dropdown_item_1line, parent, false); 
     } 

     TextView tt = (TextView) v.findViewById(android.R.id.text1); 
     tt.setText("Suggestion item"); 

     return v; 
    } 

    public Filter getFilter() { 
     return filter; 
    } 

    private class SuggestionsFilter extends Filter { 

     @Override 
     protected FilterResults performFiltering(CharSequence constraint) { 
      return null; 
     } 

     @Override 
     protected void publishResults(CharSequence constraint, FilterResults results) { 
      notifyDataSetChanged(); 
     } 
    } 
} 

}

...和我的布局文件:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<!-- Pretty hint text, and maxLines --> 
<AutoCompleteTextView android:id="@+id/autocomplete" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:inputType="text" 
    android:maxLines="1" 
    android:imeOptions="actionSearch" 
    android:layout_toLeftOf="@+id/spinner" /> 

回答

5

我找到了解决我的问题。我没有在我的performFiltering方法中设置results.count。将此属性设置为例如results.count = 1解决了消除建议项目的问题。

+0

我也面临同样的问题,我有数组列表,所以我如何设置或实现,你的建议是可观的。 – 2012-08-27 11:14:51