zoukankan      html  css  js  c++  java
  • 找呀志_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中显示
    实现效果例如以下:

    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
    <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>
    


    list_item_user.xml
    <?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>



    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)
    arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
    arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
    arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
    arcgis api 3.x for js 入门开发系列四地图查询(附源码下载)
    Java里面获取当前服务器的IP地址
    Flutter at Google I/O 2018
    Modbus RTU 协议使用汇总
    plsql 创建表空间、用户、赋予权限
    Oracle:ODP.NET Managed 小试牛刀
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4818642.html
Copyright © 2011-2022 走看看