Apidemos-->Views-Lists-Cursor(people)学习

2020-12-13 04:16

阅读:305

标签:android   style   http   java   使用   strong   

Apidemos-->Views-Lists-Cursor(people)-主要用到了获取手机联系人信息,属于内容提供者的范畴,要想了解这方面的内容,可以参考官方docs
/sdk/docs/guide/topics/providers/content-provider-basics.html

这里简单说下contentprovider;
contentprovider可实现不同应用程序之间的数据共享. 它是程序之间进行数据交换的api. 
当一个程序需要把自己的数据暴露给其他程序使用时,该应用程序就可以通过提供contentprovider来实现,其他应用程序也可以通过来contentResolver操作contentprovider暴露的数据.

实例中用到了系统提供的联系人contentprovider:
常用的几个Uri有:
ContactsContract.Contacts.CONTENT_URL   //管理联系人的URI
ContactsContract.Contacts._ID//联系人Id
ContactsContract.Contacts.DISPLAY_NAME //联系人name 的Uri
ContactsContract.CommonDataKinds.Phone.CONTENT_URI 管理联系的电话的URI
ContactsContract.CommonDataKinds.Email.CONTENT_URI 管理联系人的E-mail的URI

随便写下自己犯了一个超级低级的错误就是. 
居然采用for来遍历cursor,把 moveToNext丢了.  还有使用完关闭游标,加上mCursor.close(); 
package com.example.testmyviewslistscursorpeople;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.net.LocalSocketAddress.Namespace;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.text.GetChars;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.example.testmyviewslistsactivateitems.R;

/**
 * 
 * @author Administrator 仿效果slow loading apiDemos -- Views -Lists - Slow Adapter
 */
public class Main extends ListActivity {

	private boolean mBusy = false;
	public static List mStrings = new ArrayList();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		getPeople();
		setListAdapter(new SlowAdapter(this));
		// 设置选择模式为单选
		getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
		// 首次加载设置选中items
		getListView().setItemChecked(0, true);
		getListView().setOnScrollListener(new OnScrollListener());

	}

	protected class OnScrollListener implements ListView.OnScrollListener {

		@Override
		public void onScrollStateChanged(AbsListView view, int scrollState) {
			switch (scrollState) {
			// The view is not scrolling.
			case OnScrollListener.SCROLL_STATE_IDLE:
				mBusy = false;
				int first = view.getFirstVisiblePosition();
				int count = view.getChildCount();
				for (int i = 0; i 
实例源码

增加获取手机联系人电话的方法(只为了解获取方法,尚未和联系人一一对应,后续将改进):
	protected void getPeople() {
		final String[] CONTACT_PROJECTION = new String[] { Contacts._ID,
				Contacts.DISPLAY_NAME };
		//联系人
		Cursor mCursor = getContentResolver().query(Contacts.CONTENT_URI,
				CONTACT_PROJECTION, null, null, null);
		//联系人电话
		Cursor phones = getContentResolver().query(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
				ContactsContract.CommonDataKinds.Phone.CONTACT_ID, null, null);
		while (mCursor.moveToNext()) {
			// 获取联系人
			String name = mCursor.getString(mCursor
					.getColumnIndex(Contacts.DISPLAY_NAME));
			mStrings.add(name);
			if (phones.moveToNext()) {
				//获取电话
				String phone = phones.getString(phones
						.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
				mStrings.add(phone);
			}
		
		}
		//关闭资源
		mCursor.close();
		phones.close();
	}

Views-Lists-Cursor(people)学习,soscw.com" href="http://www.soscw.com/infodetail-253545.html" target="_blank">Apidemos-->Views-Lists-Cursor(people)学习,搜素材,soscw.com

Views-Lists-Cursor(people)学习,soscw.com" target="_blank">Apidemos-->Views-Lists-Cursor(people)学习

标签:android   style   http   java   使用   strong   

原文地址:http://blog.csdn.net/aikongmeng/article/details/37656781


评论


亲,登录后才可以留言!