安卓——之ListView和SQLite數(shù)據(jù)庫寫一個(gè)聯(lián)系人

安卓的數(shù)據(jù)存儲分為五大類:SharedPreferences存儲、文件存儲(內(nèi)部存儲、外部SD卡存儲)、SQLite數(shù)據(jù)顯卡存儲、 ContentProvider 、網(wǎng)絡(luò)存儲。

SharedPreferences:它是Android提供的用來存儲一些簡單的配置信息的一種機(jī)制,采用XML格式將數(shù)據(jù)存儲到設(shè)備中,常應(yīng)用于存儲程序的各種配置信息,如用戶名、密碼。可應(yīng)用于登陸的記住密碼。

SQLite數(shù)據(jù)庫:是Android自帶的一個(gè)輕量級數(shù)據(jù)庫。

文件存儲:主要就是Java的IO流操作,不過要注意權(quán)限的設(shè)置。

最近寫了一個(gè)安卓作業(yè),要實(shí)現(xiàn)添加聯(lián)系人刪除聯(lián)系人查找聯(lián)系人并進(jìn)行SQLite數(shù)據(jù)庫操作。

中途踩到了些許坑:

1.數(shù)據(jù)庫中id是自動增長的,而且id一旦創(chuàng)建是不會改變的,這就導(dǎo)致在刪除操作時(shí)出現(xiàn)點(diǎn)擊獲取的動態(tài)id無法匹配數(shù)據(jù)庫中靜態(tài)的id以至于從數(shù)據(jù)庫刪除數(shù)據(jù)失敗。

2.本人喜歡自定義設(shè)計(jì)界面分布及色調(diào),但在自定義對話框時(shí),由于對話框最后調(diào)用了dismiss()方法銷毀視圖,導(dǎo)致獲取的數(shù)據(jù)傳過去主界面就變成了null數(shù)據(jù)。

更新坑點(diǎn):3.這個(gè)坑點(diǎn)是等我寫完文章的第二天才測試到的。。。就是在刪除完數(shù)據(jù)之后再繼續(xù)添加聯(lián)系人的話數(shù)據(jù)的id是自動增長的,就意味著原來數(shù)據(jù)庫里有3條數(shù)據(jù),然后刪除id為2的數(shù)據(jù),此時(shí)數(shù)據(jù)庫id修改為1,2,但我再插入一條數(shù)據(jù)時(shí)由于id是自動增長的,所以此時(shí)插入的數(shù)據(jù)id就變成4了。。。

亮點(diǎn):程序?qū)崿F(xiàn)了第一次登陸之后的每次登陸都自動訪問數(shù)據(jù)庫顯示之前存儲的聯(lián)系人信息。

接下來直接開始一步步實(shí)現(xiàn)功能了,首先創(chuàng)建一個(gè)數(shù)據(jù)庫類。

MyHelper類

針對第一個(gè)坑我采用此解決方案:當(dāng)開始刪除數(shù)據(jù)庫數(shù)據(jù)時(shí),把id大于當(dāng)前刪除數(shù)據(jù)的id都update往上移。

updateID方法

針對第二個(gè)坑我采用此解決方案:要在主界面獲取對話框的數(shù)據(jù)的話,我直接在對話框獲取數(shù)據(jù)后一并插入SQLite數(shù)據(jù)庫,這樣主界面就可以直接從數(shù)據(jù)庫中讀取數(shù)據(jù)了,也就解決了對話框一旦銷毀掉數(shù)據(jù)在內(nèi)存中也跟著銷毀的問題了。

插入數(shù)據(jù)庫

針對第三個(gè)坑我采用此解決方案:在插入的時(shí)候手動插入id,即雖然id一開始是自動增長的,但之后插入的時(shí)候我都手動插入id的值。

map插入id
手動插入id進(jìn)入數(shù)據(jù)庫

查找聯(lián)系人功能本想著還是在主界面彈出自定義對話框,但寫了1小時(shí)了還是不太明白在dismiss銷毀對話框之間如何獲取到信息,所以最后采用了同學(xué)了其他做法,直接在主界面設(shè)置個(gè)對話框,通過setView()方法把布局文件設(shè)置進(jìn)去,此時(shí)對于布局界面的按鈕就無法靈活定義樣式了。不過此時(shí)需要用到打氣筒inflate的方式加載布局文件并生成View對象,多用于ListView

按姓名查找的方法

PS:網(wǎng)上提供的三種使用打氣筒方法

使用ListView顯示數(shù)據(jù)的步驟為:1.創(chuàng)建一個(gè)適配器存儲數(shù)據(jù);2.把適配器通過ListView的setAdapter()方法添加進(jìn)去,如下:

代碼截圖

此處介紹菜單的使用:

選項(xiàng)菜單:

代碼截圖

上下文菜單:注意要為上下文菜單注冊監(jiān)聽哪個(gè)控件響應(yīng)。代碼為:registerForContextMenu(list);

代碼截圖

Tip:最后程序運(yùn)行效果圖如下:


新增聯(lián)系人
刪除聯(lián)系人


查找聯(lián)系人

哈哈,如有寫錯請?zhí)岢?,這對還是新手的我大有幫助。上面值得優(yōu)化得地方有用戶體驗(yàn)和創(chuàng)建數(shù)據(jù)庫連接時(shí)不能寫死兩點(diǎn)沒做好。

代碼放在我的碼云上,鏈接為:https://gitee.com/jxb_770411142/codes/iqu6a97p3rjnl8wdgo1bx100

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,267評論 25 708
  • 三千里路云與月, 東出橫浦舊關(guān)山。 車子停了下來。趙嬰齊掀開布簾,揮了揮手。揭陽橙行云快步趕了過來,側(cè)身單膝跪了...
    梧桐樹邊羽閱讀 536評論 6 18
  • 最近網(wǎng)上瘋傳一篇6千字的網(wǎng)紅文章《牛蛙之殤》,作者是上海一位68歲的退休教授,其6歲的小外孫為了考上上海的...
    三十未立閱讀 1,887評論 0 0
  • #幸福是需要修出來的~每天進(jìn)步1%~幸福實(shí)修09班~19-姓名雅楠 20170717(1/30)09班 【幸福三朵...
    幸福實(shí)修09班19號雅楠閱讀 236評論 1 2
  • 梅姥娘有兩個(gè)兒子,在和大兒子鬧翻之后,她和二兒子一家來往更親密。 二兒子也有兩個(gè)兒子,大兒子叫小發(fā),和我同年;小兒...
    李金子閱讀 970評論 0 1

友情鏈接更多精彩內(nèi)容