赵雅智_ContentResolver操作ContentProvider中的数据

当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成

要获取ContentResolver 对象,可以使用Activity提供的getContentResolver()方法。

 ContentResolver 类提供了与ContentProvider类相同签名的四个方法:

  1. public Uri insert(Uri uri, ContentValues values)该方法用于往ContentProvider添加数据。
  2. public int delete(Uri uri, String selection, String[] selectionArgs)该方法用于从ContentProvider删除数据。
  3. public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)该方法用于更新ContentProvider中的数据。
  4. public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)该方法用于从ContentProvider中获取数据。

这些方法的第一个参数为Uri,代表要操作的是哪个ContentProvider和对其中的什么数据进行操作,假设给定的是

Uri.parse(“content://cn.itcast.provider.personprovider/person/10”)那么将会对主机名为cn.itcast.provider.personprovider的ContentProvider进行操作,操作的数据为person表中id为10的记录。

使用ContentResolver对ContentProvider中的数据进行添加、删除、修改和查询操作:

  1. 创建内容解析器对象 ContentResolver
  2. 定义URI
  3. 进行增删改查方法
具体事例:
实现:对上一个项目的共享进行查询并在listview中显示
实现效果如下:
赵雅智_ContentResolver操作ContentProvider中的数据_第1张图片
MainActivity.java
package com.example.android_provider;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	private ListView lv_user;
	// 内容解析器
	private ContentResolver contentResolver;
	// 操作的标志
	private static final String AUTHORITIE = "www.csdn.com.provider.userContentProvider";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 模型层
		// 创建内容解析器对象
		contentResolver = getContentResolver();
		
		// 控制层
		Cursor c = contentResolver.query(
				Uri.parse("content://" + AUTHORITIE + "/query"), new String[] {
						"userid as _id", "username", "userphone" }, null, null,
				null);
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
				R.layout.list_item_user, c, new String[] { "username",
						"userphone" },
				new int[] { R.id.tv_name, R.id.tv_phone },
				CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
		
		// 视图层
		lv_user = (ListView) findViewById(R.id.listView1);
		lv_user.setAdapter(adapter);
	}

}
activity_main.xml


    
     
    




list_item_user.xml




    


你可能感兴趣的:(Android基础课程,android,android基础课程)