Frage

I AutoCompleteTextView und Überschreibung preformFiltering Funktion zu erhalten, um Ergebnisse aus der Datenbank erweitern. Ich bin immer die Ergebnisse, aber dann wird nichts gezeigt. Und getView in benutzerdefinierten Adapter nie aufgerufen. Das Merkwürdige, dass, wenn ich Artikel Vorspannung (innen init () Funktion) ich sie sehen kann ... Kann von jedermann kann mir die richtige Lösung zeigen? Danke.

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


}
War es hilfreich?

Lösung

ersetzt mCityListItems mit mCityAutoCompleteAdapter und jetzt funktioniert es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top