2101-view-autocomplete
来源:互联网 发布:矩阵计算 戈卢布 pdf 编辑:程序博客网 时间:2024/05/21 20:23
介绍使用CursorAdapter实现autocomplete
/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.android.apis.view;import com.example.android.apis.R;import android.app.Activity;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.os.Bundle;import android.provider.Contacts;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AutoCompleteTextView;import android.widget.CursorAdapter;import android.widget.Filterable;import android.widget.TextView;public class AutoComplete4 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.autocomplete_4); ContentResolver content = getContentResolver(); Cursor cursor = content.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION, null, null, Contacts.People.DEFAULT_SORT_ORDER); ContactListAdapter adapter = new ContactListAdapter(this, cursor); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit); textView.setAdapter(adapter); } // XXX compiler bug in javac 1.5.0_07-164, we need to implement Filterable // to make compilation work public static class ContactListAdapter extends CursorAdapter implements Filterable { public ContactListAdapter(Context context, Cursor c) { super(context, c); mContent = context.getContentResolver(); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final LayoutInflater inflater = LayoutInflater.from(context); final TextView view = (TextView) inflater.inflate( android.R.layout.simple_dropdown_item_1line, parent, false); view.setText(cursor.getString(5)); return view; } @Override public void bindView(View view, Context context, Cursor cursor) { ((TextView) view).setText(cursor.getString(5)); } @Override public String convertToString(Cursor cursor) { return cursor.getString(5); } @Override public Cursor runQueryOnBackgroundThread(CharSequence constraint) { com.example.android.apis.Log.log("getFilterQueryProvider() : "+getFilterQueryProvider()); if (getFilterQueryProvider() != null) { return getFilterQueryProvider().runQuery(constraint); } StringBuilder buffer = null; String[] args = null; com.example.android.apis.Log.log(constraint); if (constraint != null) { buffer = new StringBuilder(); buffer.append("UPPER("); buffer.append(Contacts.ContactMethods.NAME); buffer.append(") GLOB ?"); args = new String[] { constraint.toString().toUpperCase() + "*" }; } com.example.android.apis.Log.log(constraint); com.example.android.apis.Log.log(buffer.toString()); Cursor cursor = mContent.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION, buffer == null ? null : buffer.toString(), args, Contacts.People.DEFAULT_SORT_ORDER); return mContent.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION, buffer == null ? null : buffer.toString(), args, Contacts.People.DEFAULT_SORT_ORDER); } private ContentResolver mContent; } private static final String[] PEOPLE_PROJECTION = new String[] { Contacts.People._ID, Contacts.People.PRIMARY_PHONE_ID, Contacts.People.TYPE, Contacts.People.NUMBER, Contacts.People.LABEL, Contacts.People.NAME, };}runQueryOnBackgroundThread method
每当用户输入字符的时候产生一个新的Cursor 更新autocomplete
如果要显示下面的提示效果
只需要给AutoCompleteTextView加上属性: android:completionHint="@string/autocomplete_5_hint
0 0
- 2101-view-autocomplete
- apis.view 之 Animation,AutoComplete,Baseline,Chronometer
- AutoComplete
- AutoComplete
- autocomplete
- autocomplete
- autocomplete
- autocomplete
- autocomplete
- autocomplete
- Autocomplete
- autoComplete
- autocomplete
- autocomplete
- autocomplete
- autocomplete
- Autocomplete
- autocomplete
- Spring security防止用户重复登录
- Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO)
- listview baseadapter
- img内联替换元素
- SIFT+SVM 使用Bag of Features
- 2101-view-autocomplete
- BlueTooth: 蓝牙基带数据传输机理分析
- Wait延时及定时查询
- html 前台通用表单
- 医调项目之C# 服务端与客户端JS通讯数据加密
- 获取 磁盘空间、文件夹等大小
- 无法打开包括文件:“afxcontrolbars.h”
- 特权级变换中调用门的学习
- getifaddrs()和struct ifaddrs的使用,获取本机IP