範例程式碼:
這是一個讀取連絡人的代碼:
package com.ui.domain;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.database.Cursor;import android.database.DataSetObserver;import android.graphics.Color;import android.os.Bundle;import android.provider.ContactsContract;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.ListView;public class CallPhone extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.call_phone);//連絡人清單final List<String> dataList=new ArrayList<String>(); // 獲得所有的連絡人 Cursor cur = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); while (cur.moveToNext()) { int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID); int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); String phoneNumber=cur.getString(1); String disPlayName = cur.getString(displayNameColumn); dataList.add(disPlayName+":"+phoneNumber); Log.i("連絡人名稱:", disPlayName);}cur.close();//關閉遊標ListView listView=(ListView)findViewById(R.id.listView1);listView.setAdapter(new ListAdapter() {@Overridepublic void unregisterDataSetObserver(DataSetObserver paramDataSetObserver) {// TODO Auto-generated method stub}@Overridepublic void registerDataSetObserver(DataSetObserver paramDataSetObserver) {// TODO Auto-generated method stub}@Overridepublic boolean isEmpty() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean hasStableIds() {// TODO Auto-generated method stubreturn false;}@Overridepublic int getViewTypeCount() {// TODO Auto-generated method stubreturn dataList.size();}@Overridepublic View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {// TODO Auto-generated method stubEditText text=new EditText(CallPhone.this);text.setBackgroundColor(Color.WHITE);text.setText(dataList.get(paramInt));return text;}@Overridepublic int getItemViewType(int paramInt) {// TODO Auto-generated method stubreturn 0;}@Overridepublic long getItemId(int paramInt) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int paramInt) {// TODO Auto-generated method stubreturn dataList.get(paramInt);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn dataList.size();}@Overridepublic boolean isEnabled(int paramInt) {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean areAllItemsEnabled() {// TODO Auto-generated method stubreturn false;}}); }@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubgetMenuInflater().inflate(R.menu.call_phone, menu);return true;}}
這個listView有個setAdapter 適配器,裡面可以直接實現介面,或者寫個類,實現
ListAdapter
這個介面
listView.setAdapter
在定義一個list 集合 泛型為String
介面中有個方法:
@Overridepublic Object getItem(int paramInt) {// TODO Auto-generated method stubreturn dataList.get(paramInt);}
return 就是 返回list的資料
paramInt 這是索引號
直接取list.get(索引)
這樣就可以了
還要實現上述的幾個方法
注意,如果list!>1 就會報錯