bài 6: working with data

14
Working with DATA ANDROID APPLICATION DEVELOPMENT hoccungdoanhnghiep.com

Upload: hoccungdoanhnghiep

Post on 24-Jun-2015

1.476 views

Category:

Education


7 download

TRANSCRIPT

Page 1: Bài 6: Working with DATA

Working with DATA

ANDROID APPLICATION DEVELOPMENT

hoccungdoanhnghiep.com

Page 2: Bài 6: Working with DATA

Nội dungData Storage in AndroidShared PreferencesSQLite database

hoccungdoanhnghiep.com

Page 3: Bài 6: Working with DATA

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

Page 4: Bài 6: Working with DATA

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

Page 5: Bài 6: Working with DATA

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

Page 6: Bài 6: Working with DATA

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

Page 7: Bài 6: Working with DATA

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

Page 8: Bài 6: Working with DATA

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

Page 9: Bài 6: Working with DATA

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

Page 10: Bài 6: Working with DATA

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

Page 11: Bài 6: Working with DATA

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

Page 12: Bài 6: Working with DATA

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

Page 13: Bài 6: Working with DATA

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

Page 14: Bài 6: Working with DATA

Tham khảo

http://developer.android.com/guide/topics/data/

data-storage.html

hoccungdoanhnghiep.com