Tiếp tục tôi sẽ chỉ các bạn tạo một thể hiện của một dòng dữ liệu.
Mỗi một bảng trong SQLite nên tạo một thể hiện kế thừa từ lớp DataRow này.
Một DataRow chứa một số các DataField nên ta khai báo một mảng DataField.
Ngoài ra ta cần phải khai báo một biến trung ContentValues và một thể hiện Database ta đã tạo ở phần 1
Mỗi một bảng trong SQLite nên tạo một thể hiện kế thừa từ lớp DataRow này.
Một DataRow chứa một số các DataField nên ta khai báo một mảng DataField.
Ngoài ra ta cần phải khai báo một biến trung ContentValues và một thể hiện Database ta đã tạo ở phần 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| package com.tannm.doan.taskmanager.database; import android.content.ContentValues; import android.database.Cursor; public abstract class DataRow { // fields protected Database userdb = null ; private DataField[] vecTableDef = null ; private ContentValues values = new ContentValues(); // methods public DataRow(Database userdb) { this .userdb = userdb; } public Database getUserDb() { return userdb; } public void setTableDefinition(DataField[] vecTableDef) { this .vecTableDef = vecTableDef; // initialize field parent updateDataFieldsParentRow( this ); } public void updateDataFieldsParentRow(DataRow row) { for ( int i = 0 ; i < vecTableDef.length; i++) vecTableDef[i].setParentRow(row); } public void copyTableDefinition(DataRow data) { setTableDefinition(data.vecTableDef); } public DataField[] getTableDef() { return vecTableDef; } public boolean validate() { return false ; } public void clearContentValues() { values.clear(); } public ContentValues getContentValues() { return values; } public void setContentValues(ContentValues values) { this .values = values; updateDataFieldsParentRow( this ); } public boolean copyContentValues(ContentValues values) { this .values = values; updateDataFieldsParentRow( this ); try { getValuesFromDataRow(); return true ; } catch (Exception e) { } return false ; } public DataField value( int idx) { return vecTableDef[idx]; } public String fieldName( int idx) { return vecTableDef[idx].getName(); } public boolean getValuesFromCursor(Cursor cr) { if ((cr != null ) && (cr.getPosition() != - 1 )) { for ( int idx = 0 ; idx < vecTableDef.length; idx++) { DataField field = value(idx); // check if null value if (cr.isNull(idx)) { field.setNull(); } else { final DataField.Type t = field.getType(); // parse value by type if (t == DataField.Type.INT) field.set(cr.getLong(idx)); if (t == DataField.Type.TEXT) field.set(cr.getString(idx)); if (t == DataField.Type.BOOL) field.set((cr.getInt(idx) == 1 ) ? true : false ); } } return true ; } return false ; } // sets fields values data (ContentValues values contener) from parent // object fields public abstract void setValuesForDataRow(); // gets data from fields values (ContentValues values contener) to parent // object fields public abstract void getValuesFromDataRow(); public abstract String getTableName(); } |
Không có nhận xét nào:
Đăng nhận xét