赞
踩
主要代码
- package com.example.android_loader_manager;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import android.app.Activity;
- import android.app.LoaderManager;
- import android.app.LoaderManager.LoaderCallbacks;
- import android.content.ContentResolver;
- import android.content.ContentValues;
- import android.content.Context;
- import android.content.CursorLoader;
- import android.content.Loader;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.TextView;
-
- public class MainActivity extends Activity {
-
- private LoaderManager manager;
- private ListView listview;
- private Button button ;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- manager = getLoaderManager();//加载loadermanager 完成异步加载
- manager.initLoader(1000, null, callback);
- listview = (ListView) this.findViewById(R.id.listview);
- button = (Button) this.findViewById(R.id.button);
- button.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Uri uri = Uri.parse("content://com.example.android_loader_manager.StudentContentProvider/student");
- ContentResolver contentResolver = getContentResolver();
- ContentValues value = new ContentValues();
- value.put("name", "jack");
- Uri result_Uri = contentResolver.insert(uri, value);
- if(result_Uri!=null){
- manager.restartLoader(1000, null, callback);//重新加载数据 重新启动loader 调用onLoadFinished方法 从而刷新listview
- }
- }
- });
- }
- private LoaderManager.LoaderCallbacks<Cursor> callback = new LoaderCallbacks<Cursor>() {
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- List<String> list = new ArrayList<String>();
- // 把数据提取出来 放入适配器中
- while(data.moveToNext()){
- String name = data.getString(data.getColumnIndex("name"));
- list.add(name);
- }
- MyAdapter adapter = new MyAdapter(MainActivity.this);
- adapter.setList(list);
- listview.setAdapter(adapter);
- adapter.notifyDataSetChanged();
- }
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- // TODO Auto-generated method stub
- CursorLoader loader = new CursorLoader(MainActivity.this);
- Uri uri = Uri.parse("content://com.example.android_loader_manager.StudentContentProvider/student");
- loader.setUri(uri);
- return loader;
- }
- };
-
- class MyAdapter extends BaseAdapter{
- private Context context;
- private List<String> list;
- public MyAdapter(Context context){
- this.context = context;
- }
- public void setList(List<String> list){
- this.list = list;
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return list.size();
- }
-
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return list.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- TextView view = null;
- if(convertView==null){
- view = new TextView(context);
- }else{
- view = (TextView) convertView;
- }
- view.setText(list.get(position).toString());
- return view;
- }
-
- }
- }

- package com.example.android_loader_manager;
-
- import com.example.android_loader_manager.dbhelper.DBHelper;
-
- import android.R.integer;
- import android.content.ContentProvider;
- import android.content.ContentUris;
- import android.content.ContentValues;
- import android.content.UriMatcher;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.net.Uri;
-
- public class StudentContentProvider extends ContentProvider {
-
- private final static UriMatcher URI_MATCHER = new UriMatcher(
- UriMatcher.NO_MATCH);
- private final static int STUDENT = 1;
- private final static int STUDENTS = 2;
- private DBHelper helper;
- static {
- URI_MATCHER.addURI(
- "com.example.android_loader_manager.StudentContentProvider",
- "student", STUDENTS);
- URI_MATCHER.addURI(
- "com.example.android_loader_manager.StudentContentProvider",
- "student/#", STUDENT);
- }
-
- public StudentContentProvider() {
- // TODO Auto-generated constructor stub
- }
-
- @Override
- public int delete(Uri uri, String selection, String[] selectionArgs) {
- // TODO Auto-generated method stub
- int count = 0;// 影响数据库的行数
- int flag = URI_MATCHER.match(uri);
- SQLiteDatabase database = helper.getWritableDatabase();
-
- switch (flag) {
- case STUDENT:
- long stuid = ContentUris.parseId(uri);
- String where_value = " stuid = " + stuid;
- if (selection != null && !selection.equals("")) {
- where_value += selection;
- }
- count = database.delete("student", where_value, selectionArgs);
- break;
-
- case STUDENTS:
- count = database.delete("student", selection, selectionArgs);
- break;
- }
- return count;
- }
-
- @Override
- public String getType(Uri uri) {
- // TODO Auto-generated method stub
- int flag = URI_MATCHER.match(uri);
- switch (flag) {
- case STUDENT:
- return "vnd.android.cursor.item/student";
- case STUDENTS:
- return "vnd.android.cursor.dir/studens";
- }
- return null;
- }
-
- @Override
- public Uri insert(Uri uri, ContentValues contentValues) {
- // TODO Auto-generated method stub
- int flag = URI_MATCHER.match(uri);
- SQLiteDatabase database = helper.getWritableDatabase();
- Uri uri2 = null;
- switch (flag) {
- case STUDENTS:
- long id = database.insert("student", null, contentValues);
- uri2 = ContentUris.withAppendedId(uri, id);
- break;
- }
- System.out.println("-->>" + uri2.toString());
- return uri2;
- }
-
- @Override
- public boolean onCreate() {
- // TODO Auto-generated method stub
- helper = new DBHelper(getContext());
- return false;
- }
-
- @Override
- public Cursor query(Uri uri, String[] projection, String selection,
- String[] selectionArgs, String sortOrder) {
- // TODO Auto-generated method stub
- Cursor cursor = null;
- int flag = URI_MATCHER.match(uri);
- SQLiteDatabase database = helper.getReadableDatabase();
- switch (flag) {
- case STUDENT:
- long stuid = ContentUris.parseId(uri);
- String where_value = " stuid = " + stuid;
- if (selection != null && !"".equals(selection)) {
- where_value += selection;
- }
- cursor = database.query("student", projection, where_value,
- selectionArgs, null, null, null);
-
- break;
-
- case STUDENTS:
- cursor = database.query("student", projection, selection,
- selectionArgs, null, null, null);
- break;
- }
- return cursor;
- }
-
- @Override
- public int update(Uri uri, ContentValues values, String selection,
- String[] selectionArgs) {
- // TODO Auto-generated method stub
- int count = 0;
- int flag = URI_MATCHER.match(uri);
- SQLiteDatabase database = helper.getWritableDatabase();
- switch (flag) {
- case STUDENT:
- long stuid = ContentUris.parseId(uri);
- String where_value = " stuid = " + stuid;
- if (selection != null && !selection.equals("")) {
- where_value += selection;
- }
- count = database.update("student", values, where_value,
- selectionArgs);
- break;
-
- case STUDENTS:
- count = database
- .update("student", values, selection, selectionArgs);
- break;
- }
- return count;
- }
-
- }

- <provider
- android:name=".StudentContentProvider"
- android:authorities="com.example.android_loader_manager.StudentContentProvider" >
- </provider>
- package com.example.android_loader_manager.dbhelper;
-
- import android.content.Context;
- import android.database.DatabaseErrorHandler;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteDatabase.CursorFactory;
- import android.database.sqlite.SQLiteOpenHelper;
-
- public class DBHelper extends SQLiteOpenHelper {
-
- private static String name = "mydb.db";
- private static int version = 1;
-
- public DBHelper(Context context) {
- super(context, name, null, version);
- // TODO Auto-generated constructor stub
- }
-
- public DBHelper(Context context, String name, CursorFactory factory,
- int version, DatabaseErrorHandler errorHandler) {
- super(context, name, factory, version, errorHandler);
- // TODO Auto-generated constructor stub
- }
-
- @Override
- public void onCreate(SQLiteDatabase database) {
- // TODO Auto-generated method stub
- String sql = "create table student (stuid integer primary key autoincrement,name varchar(64))";
- database.execSQL(sql);
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- // TODO Auto-generated method stub
-
- }
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。