AutoCompleteTextView не показывает выпадающий - PullRequest
2 голосов
/ 13 августа 2010

Я расширяю AutoCompleteTextView и переопределяю функцию preformFiltering для получения результатов из базы данных. Я получаю результаты, но тогда ничего не показывается. И getView в пользовательском адаптере никогда не вызывается. Странная вещь: если я предварительно загружаю элементы (внутри функции init ()), я вижу их ... Может кто-нибудь может указать мне на правильное решение? Спасибо.

public class CityAutoCompleteTextView extends AutoCompleteTextView {
 private DataDatabase mCity;
 private CityAutoCompleteArrayAdapter mCityAutoCompleteAdapter;
    private ArrayList<CityAutoCompleteListItem> mCityListItems;
 public CityAutoCompleteTextView(Context context) { 
  super(context);  
     init();
 }
    public CityAutoCompleteTextView(Context context, AttributeSet attrs) {    
     super(context, attrs);
     init();     
    }

    public CityAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
     super(context, attrs, defStyle);
     init();     
    }
    public City getItem(int position) {
     return mCityAutoCompleteAdapter.getItem(position).getCity();
    }

    private void init() {
     mCity = new DataDatabase(this.getContext());
     mCityListItems = new ArrayList<CityAutoCompleteListItem>();
     mCityAutoCompleteAdapter = new CityAutoCompleteArrayAdapter(this.getContext(), R.layout.autocomplete_list, mCityListItems);
     this.setAdapter(mCityAutoCompleteAdapter);
    }

    @Override
    protected void performFiltering(CharSequence text, int keyCode) {
     String stext = text.toString();
     Cursor cur = mCity.getCitiesMatches(stext);

     mCityListItems.clear();
     if (cur==null) {
         mCityAutoCompleteAdapter.notifyDataSetChanged();
      return;
     }
     while(!cur.isAfterLast()) {
      City city = new City(cur.getInt(0),cur.getString(1));
      CityAutoCompleteListItem item = new CityAutoCompleteListItem(city, "Unknown province/state",cur.getString(2));
      mCityListItems.add(item);
      cur.moveToNext();      
     };
     cur.close();
     mCityAutoCompleteAdapter.notifyDataSetChanged();

     super.performFiltering(text, keyCode);     
    }


}

1 Ответ

2 голосов
/ 14 августа 2010

Заменил mCityListItems на mCityAutoCompleteAdapter, и теперь он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...