找呀志_ContentResolver操作ContentProvider数据
当需要外部的应用ContentProvider该数据被添加、删、修改和查询操作。可以使用ContentResolver 类完成
要得到ContentResolver 物,可以使用Activity提供getContentResolver()办法。
ContentResolver 类提供了与ContentProvider类同样签名的四个方法:
- public Uri insert(Uri uri, ContentValues values)该方法用于往ContentProvider加入数据。
- public int delete(Uri uri, String selection, String[] selectionArgs)该方法用于从ContentProvider删除数据。
- public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)该方法用于更新ContentProvider中的数据。
- 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中的数据进行加入、删除、改动和查询操作:
- 创建内容解析器对象 ContentResolver
- 定义URI
- 进行增删改查方法
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
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbarStyle="outsideInset" > </ListView> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btn_delete" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="5dp" android:layout_marginLeft="5dp" android:layout_marginRight="10dp" android:background="@drawable/del" android:onClick="delete" /> <Button android:id="@+id/btn_update" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/btn_delete" android:onClick="update" android:layout_margin="5dp" android:background="@drawable/refresh" /> <TextView android:id="@+id/tv_name" android:layout_width="60dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/btn_update" android:layout_alignBottom="@+id/btn_update" android:layout_alignParentLeft="true" android:paddingLeft="10dp" android:text="TextView" /> <TextView android:id="@+id/tv_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/tv_name" android:layout_toRightOf="@+id/tv_name" android:paddingLeft="10dp" android:text="TextView" /> </RelativeLayout>
版权声明:本文博主原创文章。博客,未经同意不得转载。