bài 6: working with data
Post on 24-Jun-2015
1.476 Views
Preview:
TRANSCRIPT
Working with DATA
ANDROID APPLICATION DEVELOPMENT
hoccungdoanhnghiep.com
Nội dungData Storage in AndroidShared PreferencesSQLite database
hoccungdoanhnghiep.com
Data Storage in Android
Android cung cấp nhiều cơ chế để lưu dữ liệu, và tùy
vào nhu cầu mà LTV lựa chọn phương án hợp lýCác cơ chế lưu dữ liệu:
Shared Preferences: Dùng để lưu các dữ liệu nguyên
thủy ở dạng cặp: key/valueInternal Storage: Lưu dữ liệu trên bộ nhớ trong của
thiết bịExternal Storage: Lưu trữ dữ liệu ở bộ nhớ ngoài (thẻ
nhớ, external mounted partition)SQLite database: lưu dữ liệu ở dạng có cấu trúc trong
một cơ sở dữ liệuNetwork connection: kết nối đến server mạng và lưu dữ
liệuhoccungdoanhnghiep.com
Shared Preferences
Class SharedPreferences cung cấp sẵn bộ
framework để save & get ra cặp key-value đã
lưu trước đóCác dạng dữ liệu cơ bản được dùng với share-
pref: int, string, float, long, boolean
hoccungdoanhnghiep.com
SharedPreferences -> lưu/edit data Khai báo string refPath ảo để truy xuất data: String PREF_MY_INFO_PATH =
"vn.com.smartservice.myinfo” Khai báo các key string để lưu values tương ứng
String PREF_NAME = "PREF_NAME” String PREF_AGE = "PREF_AGE” String PREF_SEX = "PREF_SEX”
Ở activity L6DataStorageActivity, cần save data, thực hiện các việc sau: Khởi tạo object của class SharePreference: SharedPreferences myinfosets
= getSharedPreferences(PREF_MY_INFO_PATH , 0); Khởi tạo object editor có khả năng save data: SharedPreferences.Editor
editor = myinfosets.edit(); save data bằng cách gọi lệnh put[TypeOfData](key, value)
editor.putBoolean(PREF_SEX, true/false); editor.commit(); // save data
hoccungdoanhnghiep.com
SharedPreferences -> get saved data
Ở activity ViewMyInfo, ta lấy ra data đã lưu sẵn từ trước. Thực hiện
các việc sau:Khởi tạo object của class SharePreference:
SharedPreferences myinfosets =
getSharedPreferences(PREF_MY_INFO_PATH , 0); Dùng obj đó để get ra data tương ứng đã được lưu:boolean sex = myinfosets.getBoolean(PREF_SEX, false); //
trong trường hợp tìm không thấy dữ liệu đã được lưu, false
sẽ được tự động trả về Tương tự cho các kiểu data khác
hoccungdoanhnghiep.com
Sử dụng SQLite database Android hỗ trợ hoàn toàn SQLite databases: create db, create
table, insert, delete, update, select. SQLite db, tham khảo: http://www.sqlite.org/ Các datatypes cung cấp bởi sqlite:
http://www.sqlite.org/datatypes.html Cách tốt nhất là thừa kế từ lớp SQLiteOpenHelper để thao tác với
db:
Ở thời điểm onCreate, db chỉ được tạo mới khi chưa
tồn tại db nàoĐưa vào khởi tạo các bảng ở onCreateDb không được load lên cho đến khi có một yêu cầu
truy xuất vào db Để read/write với db, gọi vào các hàm getWritableDatabase() và
getReadableDatabase()hoccungdoanhnghiep.com
Tạo lớp xử lý db thừa kế SQLiteOpenHelper
File > New > ClassName: DatabaseHelperPackage: vn.com.smartservice.libSupperClass: SQLiteOpenHelperMở file DatabaseHelper.java vừa tạo, Override
các hàm onCreate, onUpgrade để sử dụngFile > New > Class > MyNoteAdapter.java
Class MyNoteAdapter.java sẽ đóng vai trò layer
để access dbViết các hàm để truy xuất, insert,… dữ liệu cần
thiết
hoccungdoanhnghiep.com
Tạo mới SQLite database
Mở file DatabaseHelper.java:Override hàm onCreateChạy query để khởi tạo db: "CREATE TABLE
mynotes (id INTEGER PRIMARY KEY
AUTOINCREMENT, title TEXT, content TEXT);"
hoccungdoanhnghiep.com
Write dữ liệu vào db
Để write dữ liệu, phải đọc vào db ở dạng writetable
thông qua việc gọi hàm: getWritableDatabase():Mở file MyNoteAdapter.javaCreate method: createNote(String title, String content) làm các
việc sau:kết nối đến db dạng write: DatabaseHelper.
getWritableDatabase()Tạo object của đối tượng ContentValues để put vào set các
data: ContentValues cv = new ContentValues();put data vào:
o cv.put("title", title);o cv.put("content", content);
gọi lệnh insert dữ liệu: db.insert(tên-bảng,null,cv)Đóng kết nối bằng cách gọi vào db.close()
Ở sự kiện save data của button, gọi vào method ở
layer MyNoteAdapter đã được tạo ở trênhoccungdoanhnghiep.com
Lấy dữ liệu từ db ra
Android sử dụng lớp Cursor để lưu dữ liệu đã lấy
được từ db ra. Cursor đóng vai trò là 1 result setMở file MyNoteAdapter.javaCreate method: getNote()
Query db: database.rawQuery("select * from mynotes ",
null);
Từ kết quả trả về, lấy ra dữ liệu dòng đầu tiên và
hiển thị: Toast.makeText(getApplicationContext(),
c.getString(1) + "," + c.getString(2), 5)
Cần chú ý, trong quá trình read data, cần phải giữ
connection luôn mở. Do đó, chỉ để đọc dữ liệu, ta
nên gọi vào hàm: getReadableDatabase()hoccungdoanhnghiep.com
Sử dụng db đã tạo sẵn
Copy file db đã tạo vào thư mục /assets/ trong
projectKhi thực hiện truy cập db, ta phải copy db này vào
thư mục: /data/data/package-name/databases/Sau khi copy thành công, việc truy cập có thể
được thực hiện
hoccungdoanhnghiep.com
Bài tập về nhà
Phát triển tiếp phần MyInfo:Thay việc gõ age = thanh seekbarĐổi màn hình hiển thị My Info lên trước, thông báo
người dùng chưa đưa info vàoThêm Toast thông báo kết quả
Phát triển tiếp phần My NoteViết hàm lấy ra MyNote có id bất kỳ đã saveHiển thi lên màn hìnhEdit note đóSaveThêm Toast thông báo việc save đã hoàn tất/có
lỗihoccungdoanhnghiep.com
Tham khảo
http://developer.android.com/guide/topics/data/
data-storage.html
hoccungdoanhnghiep.com
top related