提示:看这个之前需掌握Android_U5作业实现思路
准备工作同第五章,创建布局文件,修改主题,修改清单文件中本Activity的Label名称。
- 在Android应用里创建并注册内容提供者
Android支持任何应用创建自己的ContentProvider,以便将数据提供给其他应用程序。
首先,定义继承ContentProvider的子类并实现CRUD。
创建内容提供者MyDbProvider及应用的Uri
本次作业采用的Uri为包名com.example.homework6
使用作业5中已经定义过的数据库助手类DbHelper
创建MyDAO的数据库访问类,按照内容提供者组件定义的方法和返回值类型设计
- 编写MyDAO类
|
- 编写MyDbProvider类
|
- 在Android应用里使用内容提供者
在另一个应用程序里,使用内容提供者的依据是已经在清单文件中注册ContentProvider提供的访问域名,可以在当前应用程序中使用该ContentProvider(注:本次作业没用按照课本的一个程序两个模块的方式,使用的是同一个APP内既有ContentProvider又有ContentResolver的方式)
MainActivity代码如下:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { EditText et_name; EditText et_age; Button bt_add,bt_deleteAll; ListView listView; SimpleAdapter listAdapter; ArrayList<Map<String,Object>> listData; Map<String,Object> listItem; ContentResolver contentResolver; Uri uri = Uri.parse("content://com.example.homework6"); private Cursor cursor = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_name = findViewById(R.id.et_name); et_age = findViewById(R.id.et_age); listView = findViewById(R.id.listView); listData = new ArrayList<Map<String, Object>>(); bt_add = findViewById(R.id.bt_add); bt_add.setOnClickListener(this); bt_deleteAll = findViewById(R.id.bt_del); bt_deleteAll.setOnClickListener(this); contentResolver = getContentResolver(); dbFindAll(); } private void dbFindAll() { listData.clear(); cursor = contentResolver.query(uri,null,null,null,null); listItem = new HashMap<String, Object>(); listItem.put("_id","id"); listItem.put("name","姓名"); listItem.put("age","年龄"); listData.add(listItem); if (cursor==null){ Toast.makeText(this,"未查找到任何数据,请检查uri地址是否正确",Toast.LENGTH_SHORT).show(); }else { cursor.moveToFirst(); while (!cursor.isAfterLast()){ String id = cursor.getString(0); String name = cursor.getString(1); String age = cursor.getString(2); listItem = new HashMap<String, Object>(); listItem.put("_id",id); listItem.put("name",name); listItem.put("age",age); listData.add(listItem); cursor.moveToNext(); } } showList(); } private void showList() { listAdapter = new SimpleAdapter(this,listData,R.layout.list_item,new String[]{"_id","name","age"},new int[]{R.id.tv_id,R.id.tvname,R.id.tvage}); listView.setAdapter(listAdapter); } @Override public void onClick(View v) { int se=v.getId(); switch (se){ case R.id.bt_add: ContentValues values = new ContentValues(); values.put("name",et_name.getText().toString().trim()); values.put("age",et_age.getText().toString().trim()); Uri insertUri = contentResolver.insert(uri,values); Toast.makeText(this,insertUri.toString(),Toast.LENGTH_SHORT).show(); dbFindAll(); break; case R.id.bt_del: int num=contentResolver.delete(uri,null,null); dbFindAll(); showList(); } } }
|