开发者

Autocomplete items disappearing

开发者 https://www.devze.com 2023-02-15 22:58 出处:网络
I have a strange problem regarding suggestion items for an AutocompleteView on Android 2.2. I am using a custom ArrayAdapter and Filter class implementation.

I have a strange problem regarding suggestion items for an AutocompleteView on Android 2.2. I am using a custom ArrayAdapter and Filter class implementation.

When I type into the AutocompleteView the suggestion drop-down pops up after entering two characters as shown in the following screenshot:

Autocomplete items disappearing

When I enter a third character the drop-down disappears:

Autocomplete items disappearing

After entering a fourth character the suggestion drop-down is displayed again:

Autocomplete items disappearing

I don't understand why the drop-down disappears when an uneven amount of characters is entered.

While debugging I noticed that getView() is called twice when an even amount of characters is entered, but ony once for an uneven amount. Might this be the reason for the faulty behavior?

Here is my source code:

public class AutoCompleteActivity extends Activity {

protected AutoCompleteTextView autoCompleteView;
protected AutoCompleteAdapter suggsAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState开发者_JS百科);

    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();
        }
    }
}

}

...and my layout file:

<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"  />


I found a solution to my problem. I did not set results.count in my performFiltering method. Setting this property to e.g. results.count = 1 resolved the issue with the dissapearing suggestion items.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号