編輯:Android開發實例
- /***
- * AndroidManifest.xml
- *
- <uses-permission android:name=\"android.permission.READ_CONTACTS\"/>
- /***
- * AutoMultipleContacts.java
- *
- 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.CursorAdapter;
- import android.widget.Filterable;
- import android.widget.MultiAutoCompleteTextView;
- import android.widget.TextView;
- public class AutoMultipleContacts extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.multipleselect);
- Cursor peopleCursor = getContentResolver().query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION, null, null, Contacts.People.DEFAULT_SORT_ORDER);
- ContactListAdapter contactadapter = new ContactListAdapter(this,peopleCursor);
- MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.contacts);
- textView.setAdapter(contactadapter);
- textView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
- }
- 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) {
- if (getFilterQueryProvider() != null) {
- return getFilterQueryProvider().runQuery(constraint);
- }
- StringBuilder buffer = null;
- String[] args = null;
- if (constraint != null) {
- buffer = new StringBuilder();
- buffer.append(\"UPPER(\");
- buffer.append(Contacts.ContactMethods.NAME);
- buffer.append(\") GLOB ?\");
- args = new String[] { constraint.toString().toUpperCase() + \"*\" };
- }
- 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,
- };
- }
- /***
- * res/layout/multipleselect.xml
- *
- <?xml version=\"1.0\" encoding=\"utf-8\"?>
- <LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
- android:orientation=\"vertical\"
- android:layout_width=\"fill_parent\"
- android:layout_height=\"fill_parent\"
- >
- <LinearLayout
- android:layout_width=\"fill_parent\"
- android:layout_height=\"wrap_content\"
- android:gravity=\"center_vertical\">
- <MultiAutoCompleteTextView
- android:id=\"@+id/contacts\"
- android:textSize=\"18sp\"
- android:layout_margin=\"8px\"
- android:layout_width=\"0px\"
- android:layout_height=\"wrap_content\"
- android:layout_weight=\"1\" />
- </LinearLayout>
- </LinearLayout>
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
Fragment是Android honeycomb 3.0新增的概念,在如何
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩