天天看點

Android AutoCompleteTextView 結合CursorLoader

(個人經驗,僅供參考,錯誤之處,敬請諒解)

自動完成文本(AutoCompleteTextView)

    通常比對資料量較小的情況下,可以使用數組資源、數組擴充卡。如果使用資料庫資料比對則需要使用CursorAdapter或者SimpleCusorAdaper

如果使用CursorLoader異步加載情況,則需要重寫一些函數:

adapter = new CursorAdapter(this,null,0) {
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup parent) {
                View view = getLayoutInflater().inflate(R.layout.city_list_item,null);
                ViewHolder holder = new ViewHolder();
                holder.name = view.findViewById(R.id.city_item);
                view.setTag(holder);
                return view;
            }

            @Override
            public void bindView(View view, Context context, Cursor cursor) {
                ViewHolder holder = (ViewHolder)view.getTag();
                String name = cursor.getString(cursor.getColumnIndex("name"));
                holder.name.setText(name);
            }
			//重寫結果顯示
            @Override
            public CharSequence convertToString(Cursor cursor) {
                return cursor.getString(cursor.getColumnIndex("name"));
            }
			//限制比對
            @Override
            public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
                getLoaderManager().restartLoader(0,null,ChooseCityActivity.this);
                return null;
            }

            final class ViewHolder{
                TextView name;
            }
        };