لا يظهر outocompetetextview المنسدلة
-
28-09-2019 - |
سؤال
أقوم بتوسيع نطاق التشغيل التلقائي وتجاوز وظيفة 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);
}
}
المحلول
استبدل McityListItems مع McityautocompleteadApter والآن يعمل.
لا تنتمي إلى StackOverflow