Android 内容提供者

第一个项目

1.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/et_ma_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="ID" />

    <EditText
        android:id="@+id/et_ma_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Name" />

    <EditText
        android:id="@+id/et_ma_age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="age" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="保存"
        android:onClick="save"/>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et_ma_list"></ListView>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/tv_item_list_id"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/tv_item_list_name"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/tv_item_list_age"/>
</LinearLayout>

2.MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_ma_id = (EditText) findViewById(R.id.et_ma_id);
        et_ma_age = (EditText) findViewById(R.id.et_ma_age);
        et_ma_name = (EditText) findViewById(R.id.et_ma_name);
        et_ma_list = (ListView) findViewById(R.id.et_ma_list);
        DbHelper dbHelper = new DbHelper(this, "G150831.db", null, 2);
        database = dbHelper.getReadableDatabase();
        //查询数据
        //第一个参数代表是否去重复值,第二个参数是表名,第三个是列名,第四个是查询条件,
        //第五个是条件的值,第六个是分组,第七个是分组的值,第八个是排序,第九个分页
        Cursor cursor=database.query(false,"person",null,null,null,null,null,null,"10,2");
        simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_list,cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
        et_ma_list.setAdapter(simpleCursorAdapter);
    }

    public void save(View view) {
//        String id = et_ma_id.getText().toString();
        String age = et_ma_age.getText().toString();
        String name = et_ma_name.getText().toString();
        //存到数据库
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age",age);
        database.insert("person","name",values);
        for (int i = 0; i < 100; i++) {
            database.execSQL("insert into person values(null,?,?)", new String[]{name+i, age});
        }

    }
}
3.db类
public class DbHelper extends SQLiteOpenHelper {
    /**
     *
     * @param context 上下文
     * @param name 名字(数据库的名字)
     * @param factory 游标工厂,多数情况为null
     * @param version 数据库版本
     */
    public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    //操作:创建表的操作
    @Override
    public void onCreate(SQLiteDatabase db) {
      db.execSQL("create table person(_id integer primary key autoincrement,name,age)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

4.内容提供者

public class MyProvider extends ContentProvider {

    private SQLiteDatabase sqLiteDatabase;

    @Override
    public boolean onCreate() {
        DbHelper dbHelper=new DbHelper(getContext(),"G150831.db",null,2);
        sqLiteDatabase = dbHelper.getReadableDatabase();
        return false;
    }

    @Nullable
    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
       //查询所有数据
        return  sqLiteDatabase.query(true,"person",projection,selection,selectionArgs,null,null,sortOrder,null);

    }

    @Nullable
    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return 0;
    }
}
6.在清单文件application下配置
<!--配置内容提供者-->
        <provider
            android:authorities="com.zking.g150831_android16.person"
            android:name="com.zking.provider.MyProvider"
            android:exported="true">
        </provider>

第二个项目
1.布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.zking.g150831_android24.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取数据"
        android:onClick="getData"/>
</LinearLayout>
2.MainActivity.java
public class MainActivity extends AppCompatActivity {

    private ContentResolver cr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取内容访问者
        cr = getContentResolver();
    }

    public void getData(View view) {
        Uri uri = Uri.parse("content://com.zking.g150831_android16.person");
      Log.i("哈哈","query");
        Cursor cursor = cr.query(uri, null, null, null, null);
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex("_id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.i("哈哈", id + " " + name + " " + age);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值