上一篇中完成了如上圖的UI部分的實現,現在繼續來講功能的實現,用戶登錄操作主要就是賬號列表顯示和選擇賬號登錄兩個功能其他的都是些簡單的輔助功能,首先是點擊id為iconSelectBtn的ImageButton時顯示用戶選擇窗口,這個時候去數據庫中獲取賬號記錄然后在選擇窗口中以列表方式顯示出來,通過上一篇已經知道Id為list的ListView控件來顯示賬號列表,首先是從數據庫中獲取所有的賬戶記錄然后設置默認選中的用戶賬號代碼如下:
這個initUser() 初始賬號的方法在LoginActivity的onCreate中調用,主要完成兩件事情,第一件獲取通過userList = dbHelper.GetUserList(false);獲取所有的賬戶記錄,關于DataHelper前面已經有說過了,如果獲取的用戶記錄為空那么就跳轉到用戶授權功能頁面讓用戶添加賬號,如果不為空那么通過SharedPreferences去讀取用戶上一次選擇的賬號名稱,如果沒有或者數據庫里賬號記錄不包括這個賬戶名稱那么默認顯示記錄的第一個賬號和頭像,如果有那么顯示這個賬戶的名稱和頭像。關于SharedPreferences,是android提供給開發者用來存儲一些簡單的數據用的,非常方便類似于網站的Cookie,在這里我就是用這個來保存上一次用戶選擇的是哪個賬號,非常實用。
接下類首先為Id為list的ListView控件準備數據Adapter,這個Adapter非常簡單就是普通的adapter繼承BaseAdapter即可,代碼如下:
接下就是為這個ListView設定數據源Adapter,在賬號選擇窗口顯示的時候進行設置,添加到id為iconSelectBtn的ImageButton的OnClickListener中代碼如下
通過上面代碼完成了賬號選擇的功能,接下來給id為login的ImageButton添加OnClickListener,使得點擊后以當前選擇賬號進入微博首頁,代碼如下:
在上面的GoHome方法中ConfigHelper.nowUser是類型為UserInfo的static類型用來保存當前登錄賬號的信息,替代web中session使用。
最后添加如下方法,用來當這個登錄LoginActivity結束的時候保存當前選擇的賬戶名稱到SharedPreferences中,以便幫用戶記住登錄賬號的功能,就是前面的initUser() 初始賬號的方法中會獲取保存在SharedPreferences中的賬戶名稱,代碼如下: