2010-08-13 2 views
2

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

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


} 

ответ

2

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

Смежные вопросы