Android开发教程之本地数据存储API(三)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中国移动互联网研发培训专家()初始化数据库清单18.MainActivity插入到数据库中清单19.MainActivitySelectAll和将数据绑定到ListView清单20.从本地私有存储器读取数据清单21.从内部私有存储器读取数据中国移动互联网研发培训专家/***WipeouttheDB*/publicvoidclearAll(){db.delete(TABLE_NAME,null,null);}提供了两个SELECTALL方法:cursorSelectAll()和listSelectAll(),前者返回一个游标,后者返回一个Friend对象ArrayList。这些方法在从数据库加载信息时由MainActivity调用(参见清单14)。中国移动互联网研发培训专家/***SelectAllreturnsacursor*@returnthecursorfortheDBselection*/publicCursorcursorSelectAll(){Cursorcursor=this.db.query(TABLE_NAME,//TableNamenewString[]{fid,name},//Columnstoreturnnull,//SQLWHEREnull,//SelectionArgsnull,//SQLGROUPBYnull,//SQLHAVINGname);//SQLORDERBYreturncursor;}中国移动互联网研发培训专家listSelectAll()方法返回ArrayList容器中选定的行,该容器由MainActivity用来将它绑定到MainScreenListView(参见清单15)。中国移动互联网研发培训专家*SelectAllthatreturnsanArrayList*@returntheArrayListfortheDBselection*/publicArrayListFriendlistSelectAll(){ArrayListFriendlist=newArrayListFriend();Cursorcursor=this.db.query(TABLE_NAME,newString[]{fid,name},null,null,null,null,name);if(cursor.moveToFirst()){do{中国移动互联网研发培训专家Friendf=newFriend();f.id=cursor.getString(0);f.name=cursor.getString(1);list.add(f);}while(cursor.moveToNext());}if(cursor!=null&&!cursor.isClosed()){cursor.close();}returnlist;}如果检测到数据库版本更改,就会调用onUpgrade()方法(参见清单16)。中国移动互联网研发培训专家/***InvokedifaDBupgrade(versionchange)hasbeendetected*/@Override/***InvokedifaDBupgrade(versionchange)hasbeendetected*/@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){//Hereaddanystepsneededduetoversionupgrade//forexample,dataformatconversions,oldtables//nolongerneeded,etc}}中国移动互联网研发培训专家整个MainActivity中,当您将信息导出到数据库、从数据库加载信息以及清理数据库时,都会使用DBHelper。第一件事是在创建MainActivity时实例化DBHelper。在onCreate()时执行的其他任务包括初始化不同的屏幕视图(参见清单17)。中国移动互联网研发培训专家publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);appContext=this;setContentView(R.layout.main);dbHelper=newDBHelper(this);listView=(ListView)findViewById(R.id.friendsview);中国移动互联网研发培训专家friendsArrayAdapter=newFriendsArrayAdapter(this,R.layout.rowlayout,friends);listView.setAdapter(friendsArrayAdapter);::}清单18展示了如何从资产加载好友列表以及如何将之解析并插入数据库中。中国移动互联网研发培训专家Stringfname=prefsGetFilename();if(fname!=null&&fname.length()0){buffer=getAsset(fname);//ParsetheJSONfileStringfriendslist=newString(buffer);finalJSONObjectjson=newJSONObject(friendslist);JSONArrayd=json.getJSONArray(data);intl=d.length();中国移动互联网研发培训专家for(inti2=0;i2l;i2++){JSONObjecto=d.getJSONObject(i2);Stringn=o.getString(name);Stringid=o.getString(id);dbHelper.insert(id,n);}//OnlytheoriginalownerthreadcantouchitsviewsMainActivity.this.runOnUiThread(newRunnable(){publicvoidrun(){friendsArrayAdapter.notifyDataSetChanged();}});}清单19展示了如何执行SELECTALL以及如何将数据绑定到主屏幕ListView。中国移动互联网研发培训专家finalArrayListFrienddbFriends=dbHelper.listSelectAll();if(dbFriends!=null){//OnlytheoriginalownerthreadcantouchitsviewsMainActivity.this.runOnUiThread(newRunnable(){publicvoidrun(){friendsArrayAdapter=中国移动互联网研发培训专家newFriendsArrayAdapter(MainActivity.this,R.layout.rowlayout,dbFriends);listView.setAdapter(friendsArrayAdapter);friendsArrayAdapter.notifyDataSetChanged();}});}接下来,了解一下在示例应用程序中使用InternalStorageAPI。中国移动互联网研发培训专家为私有数据使用设备的内部存储器有了数据存储API,您可以使用内部存储器存储数据。信息可以是私有的,您可以有选择地让其他应用程序对之具有读或写的访问权限。本节介绍这个存储私有数据的API,它使用android.content.Context.openFileInput、openFileOutput和getCacheDir()来高速缓存数据,而不是永久地存储。清单20中的代码片段展示了如何从内部私有存储器读取数据。使得存储器为私有的方法是对openFileOutput()使用MODE_PRIVATE。中国移动互联网研发培训专家*Writescontenttointernalstoragemakingthecontentprivateto*theapplication.ThemethodcanbeeasilychangedtotaketheMODE*asargumentandletthecallerdictatethevisibility:*MODE_PRIVATE,MODE_WORLD_WRITEABLE,MODE_WORLD_READABLE,etc.**@paramfilename-thenameofthefiletocreate*@paramcontent-thecontenttowrite*/中国移动互联网研发培训专家publicvoidwriteInternalStoragePrivate(Stringfilename,byte[]content){try{//MODE_PRIVATEcreates/replacesafileandmakes//itprivatetoyourapplication.Othermodes://MODE_WORLD_WRITEABLE//MODE_WORLD_READABLE//MODE_APPEND中国移动互联网研发培训专家FileOutputStreamfos=openFileOutput(filename,Context.MODE_PRIVATE);fos.write(content);fos.close();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}清单21中

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功