編輯:Android開發教程
Android API: http://developer.android.com/reference/android/content/Intent.html
ContactPicker:用戶可以選擇一個聯系人.
1. 創建ContactPicker活動(Activity)
位置: java->package-> ContactPicker.java
package mzx.spike.contactpicker.app; import android.app.Activity; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleCursorAdapter; /** * Created by C.L.Wang on 14-3-20. */ public class ContactPicker extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Cursor c = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null ); String[] from = new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY}; int[] to = new int[]{R.id.itemTextView}; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listitemlayout, c, from, to, 0); ListView lv = (ListView)findViewById(R.id.contactListView); lv.setAdapter(adapter); lv.setOnItemClickListener(new ListView.OnItemClickListener(){ public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { c.moveToPosition(pos); int rowId = c.getInt(c.getColumnIndexOrThrow("_id")); Uri outURI = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, rowId); Intent outData = new Intent(); outData.setData(outURI); setResult(Activity.RESULT_OK, outData); finish(); } }); } }
詳解:
1. 創建一個活動繼承Activity, 顯示activity_main界面;
2. 創建游標Cursor遍歷存儲在聯系人列表中的聯系人;
3. 構造簡單游標適配器(SimpleCursorAdapter), 注意此方法標記為遺棄, 後面需要加上參數0, 版本SDK11+;
4. 將適配器綁定至ListView, setAdapter();
5. 添加項目點擊事件(setOnItemClickListener), 將游標移植點擊位置, 取出rowID, 構造URI, 將URI綁定至Intent,;
6. 返回結果, setResult(), 結果碼(Activity_RESULT_OK) 和 Intent;
2. 修改activity_main.xml
位置: res->layout->activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" > <ListView android:id="@+id/contactListView" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
添加ListView, ContactPicker會調用此布局(layout);
3. 創建listitemlayout.xml
位置: res->layout->listitemlayout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/itemTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:textSize="16dp" android:textColor="#F0F" /> </LinearLayout>
TextView顯示ListView中的每一個聯系人, ContactPicker會調用此布局(layout);
4. 創建測試布局contactpickertester.xml
位置: res->layout->contactpickertester.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/selected_contact_textview" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/pick_contact_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Pick Contact" /> </LinearLayout>
TextView顯示選擇的聯系人,Button選擇按鈕, 啟動界面;
查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/
記得在我剛接觸Android的時候對系統聯系人中的特效很感興趣,它會根據手機中聯系人姓氏的首字母進 行分組,並在界面的最頂端始終顯示一個當前的分組。如下圖所示:最讓我感興
變態問題常有,今年特別多,,, - - # 今天遇到的這個非處理不可,不然沒法在HTC One S使用SearchView,其軟鍵盤不支持action設置。問題設備:HT
人人客戶端有一個特效還是挺吸引人的,在主界面手指向右滑動,就可以將菜單展示出來,而主界面會被 隱藏大部分,但是仍有左側的一小部分同菜單一起展示。據說人人客戶端的這個特效是
一、bindService簡介bindService是綁定Service服務,執行service服務中的邏輯流程。service通過 Context.startServi