· 9 years ago · Nov 05, 2016, 03:14 PM
1@Override
2 public void onResponse(JSONArray response) {
3 Log.d("Theo", response.toString());
4 //I use i=1 to bypass the first JSON object which doesn't contain the object member.
5 //If i set i=0,then I will get an exception.
6 for(int i = 1;i<response.length();i++){
7
8
9 try {
10
11 //Here I read the 4 objects.
12 JSONObject jsonObject = response.getJSONObject(i);
13
14 //I get the members array for JSON object
15 JSONArray teamMembersArray = jsonObject.getJSONArray("members");
16
17
18 for(int j=0;j<teamMembersArray.length();j++) {
19
20 //The model class which contains the setters/getters
21 //in order to "deserialize" the JSON objects into string objects.
22 Model m = new Model();
23
24
25 JSONObject teamObject = teamMembersArray.getJSONObject(j);
26 //I am searching if the teamLead object exists.If yes
27 //then set it to true by reading it! If not then read
28 //the next members!
29 if (teamObject.has("teamLead") && (!teamObject.isNull("teamLead"))) {
30 m.setTeamLead(teamObject.getBoolean("teamLead"));
31 }else {
32 //Default value
33 m.setTeamLead(false);
34
35 }
36 m.setId(teamObject.getInt("id"));
37 m.setProfileImageURL(teamObject.getString("profileImageURL"));
38 m.setFirstName(teamObject.getString("firstName"));
39 m.setLastName(teamObject.getString("lastName"));
40 m.setRole(teamObject.getString("role"));
41
42 //Finally I am adding the string objects into an ArrayList.
43 modelArrayList.add(m);
44
45 int id = Integer.parseInt(teamObject.getString("id"));
46 String fname = teamObject.getString("firstName");
47 String lname = teamObject.getString("lastName");
48 String role = teamObject.getString("role");
49 String proImage = teamObject.getString("profileImageURL");
50 saveToDB(id,fname,lname,role,proImage);
51 }
52 } catch (JSONException e) {
53 e.printStackTrace();
54 }
55
56 }
57
58private void saveToDB(int id,String firstName,String lastName,String role,String image){
59
60 //myMovie.setContent(descriptionText.getText().toString());
61
62 dba.addMembers(id,firstName,lastName,role,image);
63 dba.close();
64
65}
66
67int id = Integer.parseInt(teamObject.getString("id"));
68 String fname = teamObject.getString("firstName");
69 String lname = teamObject.getString("lastName");
70 String role = teamObject.getString("role");
71 String proImage = teamObject.getString("profileImageURL");
72 saveToDB(id,fname,lname,role,proImage);
73
74public class DatabaseHandler extends SQLiteOpenHelper {
75private final ArrayList<SQLiteModel> membersList = new ArrayList<>();
76public DatabaseHandler(Context context) {
77 super(context, Constants.DATABASE_NAME, null, Constants.DATABASE_VERSION);
78}
79
80@Override
81public void onCreate(SQLiteDatabase db) {
82 String CREATE_TEST_TABLE = "CREATE TABLE " + Constants.TABLE_NAME +
83 "(" + Constants.MEMBER_ID + " INTEGER PRIMARY KEY, " + Constants.FIRST_NAME +
84 " TEXT, " + Constants.LAST_NAME + " TEXT, " + Constants.JOB_ROLE + " TEXT, " +
85 Constants.PROFILE_IMAGE + " TEXT);";
86 db.execSQL(CREATE_TEST_TABLE);
87}
88
89
90@Override
91public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
92 db.execSQL("DROP TABLE IF EXISTS " + Constants.TABLE_NAME);
93}
94//add content to table
95public void addMembers(int id,String firstName,String lastName,String role,String image) {
96 SQLiteDatabase db = this.getWritableDatabase();
97
98 ContentValues values = new ContentValues();
99 values.put(Constants.MEMBER_ID,id);
100 values.put(Constants.FIRST_NAME, firstName);
101 values.put(Constants.LAST_NAME,lastName);
102 values.put(Constants.JOB_ROLE,role);
103 values.put(Constants.PROFILE_IMAGE,image);
104
105
106
107
108
109 db.insert(Constants.TABLE_NAME, null, values);
110
111 db.close();
112
113 Log.v("DB","heeeey!data saved");
114}
115
116//get all folders
117public ArrayList<SQLiteModel> getMembersDetails() {
118 //I am stuck in this part. Boolean variables are not recognized
119 //in SQLite. So I have to make the getTeamLead() method from
120 //Model class,to return an int. But this will mess up my
121 //my recycler view.
122
123
124 SQLiteDatabase db = this.getReadableDatabase();
125
126 Cursor cursor = db.query(Constants.TABLE_NAME, new String[]{
127 Constants.MEMBER_ID, Constants.FIRST_NAME,Constants.LAST_NAME,Constants.JOB_ROLE,Constants.PROFILE_IMAGE}, null, null, null, null, Constants.MEMBER_ID + " DESC");
128
129
130 if (cursor.moveToFirst()) {
131 do {
132
133 SQLiteModel sqLiteModel = new SQLiteModel();
134 sqLiteModel.setSqlId(Integer.parseInt(cursor.getString(cursor.getColumnIndex(Constants.MEMBER_ID))));
135
136 sqLiteModel.setSqlFirstName(cursor.getString(cursor.getColumnIndex(Constants.FIRST_NAME)));
137 sqLiteModel.setSqlLastName(cursor.getString(cursor.getColumnIndex(Constants.LAST_NAME)));
138 sqLiteModel.setSqlRole(cursor.getString(cursor.getColumnIndex(Constants.JOB_ROLE)));
139 sqLiteModel.setSqlProfileImageURL(cursor.getString(cursor.getColumnIndex(Constants.PROFILE_IMAGE)));
140
141
142 membersList.add(sqLiteModel);
143 }while(cursor.moveToNext());
144
145
146 }
147 return membersList;
148}
149
150}
151
15206-22 07:30:22.831 17732-17732/testing.theo.androidtestproject
153E/SQLiteDatabase:
154Error inserting lastName=Corke firstName=Hannah
155profileImageURL=http://developers.mub.lu/resources/profilePlaceholder.png
156id=24 role=Designer
157android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed:
158testdb.id (code 1555)