· 7 years ago · Feb 22, 2019, 10:18 AM
1mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
2
3package com.example.admin.test2;
4
5
6import android.database.Cursor;
7import android.database.sqlite.SQLiteDatabase;
8import android.os.Bundle;
9import android.support.annotation.Nullable;
10import android.support.v4.app.Fragment;
11import android.support.v7.widget.LinearLayoutManager;
12import android.support.v7.widget.RecyclerView;
13import android.view.LayoutInflater;
14import android.view.View;
15import android.view.ViewGroup;
16import android.widget.TextView;
17import android.widget.Toast;
18
19import java.util.ArrayList;
20
21
22/**
23 * A simple {@link Fragment} subclass.
24 */
25public class MainScreen extends Fragment {
26
27 private ArrayList <ExampleItem> mExampleList;
28
29 private RecyclerView mRecyclerView;
30 private RecyclerView.Adapter mAdapter;
31 private RecyclerView.LayoutManager mLayoutManager;
32
33 private ItemAdapter itemAdapter;
34
35 public MainScreen() {
36 // Required empty public constructor
37 }
38
39 @Nullable
40 @Override
41 public View onCreateView(LayoutInflater inflater, ViewGroup container,
42 Bundle savedInstanceState) {
43 // Inflate the layout for this fragment
44
45 View view = inflater.inflate(R.layout.fragment_main_screen, container, false);
46
47 ItemDBHelper dbHelper = new ItemDBHelper(getActivity());
48 mDatabase = dbHelper.getWritableDatabase();
49
50 mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
51 mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
52 itemAdapter = new ItemAdapter(getContext(), getAllItems());
53 mRecyclerView.setAdapter(itemAdapter);
54
55 /*
56 mExampleList = new ArrayList <>();
57 mExampleList.add(new ExampleItem(R.drawable.food, "", "", "ADD EXPENSES"));
58
59
60 mRecyclerView = view.findViewById(R.id.recyclerView);
61 mRecyclerView.setHasFixedSize(true);
62 mLayoutManager = new LinearLayoutManager(getContext());
63 mAdapter = new ExampleAdapter(mExampleList);
64
65 mRecyclerView.setLayoutManager(mLayoutManager);
66 mRecyclerView.setAdapter(mAdapter);
67 */
68
69 return view;
70 }
71
72 public SQLiteDatabase mDatabase;
73
74 private Cursor getAllItems() {
75 return mDatabase.query(
76 ItemContract.ItemEntry.TABLE_NAME,
77 null,
78 null,
79 null,
80 null,
81 null,
82 null
83 );
84 }
85
86}
87
88package com.example.admin.test2;
89
90import android.app.DatePickerDialog;
91import android.content.ContentValues;
92import android.database.Cursor;
93import android.database.sqlite.SQLiteDatabase;
94import android.graphics.Color;
95import android.graphics.drawable.ColorDrawable;
96import android.os.Bundle;
97import android.support.annotation.Nullable;
98import android.support.design.widget.FloatingActionButton;
99import android.support.v4.app.Fragment;
100import android.support.v7.widget.RecyclerView;
101import android.view.LayoutInflater;
102import android.view.View;
103import android.view.ViewGroup;
104import android.widget.DatePicker;
105import android.widget.EditText;
106import android.widget.Spinner;
107import java.util.ArrayList;
108import java.util.Calendar;
109
110public class Expense extends Fragment {
111
112 public Expense() {
113 // Required empty public constructor
114 }
115
116 //SQLite DATABASE
117 public SQLiteDatabase mDatabase;
118
119 //SPINNER
120 Spinner sp1;
121 CustomAdapter adapter;
122 String[] names = {"Food & Drink", "Shopping", "Transportation", "Home", "Bills & Fees", "Entertainment", "Healthcare", "Education", "Beauty", "Others"};
123 int[] images = {R.drawable.food, R.drawable.shopping, R.drawable.transportation, R.drawable.home, R.drawable.bills, R.drawable.entertainment, R.drawable.medical, R.drawable.education, R.drawable.beauty, R.drawable.others};
124
125 //DATE PICKER
126 private EditText mDisplayDate;
127 private DatePickerDialog.OnDateSetListener mDateSetListener;
128
129 //FOR THE ADD ITEM
130 FloatingActionButton fab;
131 private ArrayList<ExampleItem> mExampleList;
132 private RecyclerView mRecyclerView;
133 private RecyclerView.Adapter mAdapter;
134 private RecyclerView.LayoutManager mLayoutManager;
135
136 EditText amount;
137 EditText detail;
138
139 private ItemAdapter itemAdapter;
140
141 @Nullable
142 @Override
143 public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
144 Bundle savedInstanceState) {
145 // Inflate the layout for this fragment
146 View view = inflater.inflate (R.layout.fragment_expense, container, false);
147
148 ItemDBHelper dbHelper = new ItemDBHelper(getActivity());
149 mDatabase = dbHelper.getWritableDatabase();
150
151 //spinner
152 sp1 = (Spinner)view.findViewById(R.id.customSpinner);
153
154 adapter = new CustomAdapter(getActivity(), names, images);
155 sp1.setAdapter(adapter);
156
157 //fab onClick - sending values to the recycler view
158 fab = (FloatingActionButton) view.findViewById(R.id.fabs);
159 amount = (EditText) view.findViewById(R.id.textAmountt);
160 detail = (EditText) view.findViewById(R.id.textDetailss);
161
162 fab.setOnClickListener(new View.OnClickListener() {
163 @Override
164 public void onClick(View v) {
165 int pos = sp1.getSelectedItemPosition();
166 String label;
167
168 String description = detail.getText().toString();
169 Double value = Double.parseDouble(amount.getText().toString());
170
171 ContentValues cv = new ContentValues();
172
173 switch (pos)
174 {
175 case 0:
176 label = "Food & Drink";
177 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
178 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
179 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
180
181 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
182 amount.getText().clear();
183 detail.getText().clear();
184 case 1:
185 label = "Shopping";
186 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
187 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
188 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
189
190 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
191 amount.getText().clear();
192 detail.getText().clear();
193 case 2:
194 label = "Transportation";
195 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
196 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
197 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
198
199 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
200 amount.getText().clear();
201 detail.getText().clear();
202 case 3:
203 label = "Home";
204 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
205 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
206 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
207
208 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
209 amount.getText().clear();
210 detail.getText().clear();
211 case 4:
212 label = "Bills & Fees";
213 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
214 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
215 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
216
217 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
218 amount.getText().clear();
219 detail.getText().clear();
220 case 5:
221 label = "Entertainment";
222 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
223 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
224 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
225
226 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
227 amount.getText().clear();
228 detail.getText().clear();
229 case 6:
230 label = "Healthcare";
231 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
232 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
233 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
234
235 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
236 amount.getText().clear();
237 detail.getText().clear();
238 case 7:
239 label = "Education";
240 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
241 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
242 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
243
244 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
245 amount.getText().clear();
246 detail.getText().clear();
247 case 8:
248 label = "Beauty";
249 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
250 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
251 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
252
253 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
254 amount.getText().clear();
255 detail.getText().clear();
256 case 9:
257 label = "Others";
258 cv.put(ItemContract.ItemEntry.COLUMN_LABEL, label);
259 cv.put(ItemContract.ItemEntry.COLUMN_DETAIL, description);
260 cv.put(ItemContract.ItemEntry.COLUMN_AMOUNT, value);
261
262 mDatabase.insert(ItemContract.ItemEntry.TABLE_NAME, null, cv);
263 amount.getText().clear();
264 detail.getText().clear();
265 }
266
267 }
268 });
269
270 //int pos = sp1.getSelectedItemPosition();
271
272 //date picker
273 mDisplayDate = (EditText) view.findViewById(R.id.datePick);
274
275 mDisplayDate.setOnClickListener(new View.OnClickListener(){
276 @Override
277 public void onClick(View v) {
278 Calendar cal = Calendar.getInstance();
279 int year = cal.get(Calendar.YEAR);
280 int month = cal.get(Calendar.MONTH);
281 int day = cal.get(Calendar.DAY_OF_MONTH);
282
283 DatePickerDialog dialog = new DatePickerDialog(getActivity(),
284 mDateSetListener,
285 year, month, day);
286 dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
287 dialog.show();
288
289 }
290 });
291
292 mDateSetListener = new DatePickerDialog.OnDateSetListener() {
293 @Override
294 public void onDateSet(DatePicker view, int year, int month, int day) {
295 //Calendar calendar = Calendar.getInstance();
296 //String currentDate = DateFormat.getDateInstance().format(calendar.getTime());
297
298 month = month + 1;
299 String date = month + "-" + day + "-" + year;
300 mDisplayDate.setText(date);
301
302
303 }
304 };
305
306 return view;
307 }
308 }
309}
310
311package com.example.admin.test2;
312
313import android.content.Context;
314import android.database.Cursor;
315import android.support.annotation.NonNull;
316import android.support.v7.widget.RecyclerView;
317import android.view.LayoutInflater;
318import android.view.View;
319import android.view.ViewGroup;
320import android.widget.ImageView;
321import android.widget.Switch;
322import android.widget.TextView;
323
324public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
325
326 private Context mContext;
327 private Cursor mCursor;
328
329 public ItemAdapter(Context context, Cursor cursor) {
330 mContext = context;
331 mCursor = cursor;
332
333 }
334
335 public class ItemViewHolder extends RecyclerView.ViewHolder {
336
337 public ImageView itemImage;
338 public TextView labelText;
339 public TextView detailText;
340 public TextView amountText;
341
342 public ItemViewHolder(@NonNull View itemView) {
343 super(itemView);
344
345 itemImage = itemView.findViewById(R.id.imageIcon);
346 labelText = itemView.findViewById(R.id.textLabel);
347 detailText = itemView.findViewById(R.id.textDetails);
348 amountText = itemView.findViewById(R.id.textAmount);
349 }
350 }
351
352 @NonNull
353 @Override
354 public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
355 LayoutInflater inflater = LayoutInflater.from(mContext);
356 View view = inflater.inflate(R.layout.customlist, parent, false);
357 return new ItemViewHolder(view);
358 }
359
360 @Override
361 public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
362 if (!mCursor.moveToPosition(position)){
363 return;
364 }
365
366 String label = mCursor.getString(mCursor.getColumnIndex(ItemContract.ItemEntry.COLUMN_LABEL));
367 String detail = mCursor.getString(mCursor.getColumnIndex(ItemContract.ItemEntry.COLUMN_DETAIL));
368 double amount = mCursor.getDouble(mCursor.getColumnIndex(ItemContract.ItemEntry.COLUMN_AMOUNT));
369
370 //holder.itemImage.setImageDrawable();
371 switch (label){
372 case "Food & Drink":
373 holder.itemImage.setImageResource(R.drawable.food);
374 case "Shopping":
375 holder.itemImage.setImageResource(R.drawable.shopping);
376 case "Transportation":
377 holder.itemImage.setImageResource(R.drawable.transportation);
378 case "Home":
379 holder.itemImage.setImageResource(R.drawable.home);
380 case "Bills & Fees":
381 holder.itemImage.setImageResource(R.drawable.bills);
382 case "Entertainment":
383 holder.itemImage.setImageResource(R.drawable.entertainment);
384 case "Healthcare":
385 holder.itemImage.setImageResource(R.drawable.medical);
386 case "Education":
387 holder.itemImage.setImageResource(R.drawable.education);
388 case "Beauty":
389 holder.itemImage.setImageResource(R.drawable.beauty);
390 case "Others":
391 holder.itemImage.setImageResource(R.drawable.others);
392 }
393 holder.labelText.setText(label);
394 holder.detailText.setText(detail);
395 holder.amountText.setText(String.valueOf(amount));
396
397
398 }
399
400 @Override
401 public int getItemCount() {
402 return mCursor.getCount();
403 }
404
405 public void swapCursor (Cursor newCursor){
406 if(mCursor != null){
407 mCursor.close();
408 }
409
410 mCursor = newCursor;
411
412 if (newCursor != null){
413 notifyDataSetChanged();
414 }
415 }
416}
417
418package com.example.admin.test2;
419
420import android.content.Context;
421import android.database.sqlite.SQLiteDatabase;
422import android.database.sqlite.SQLiteOpenHelper;
423import com.example.admin.test2.ItemContract.*;
424
425
426public class ItemDBHelper extends SQLiteOpenHelper {
427
428 public static final String DATABASE_NAME = "itemlist.db";
429 public static final int DATABASE_VERSION = 1;
430
431 public ItemDBHelper(Context context) {
432 super(context, DATABASE_NAME, null, DATABASE_VERSION);
433 }
434
435 @Override
436 public void onCreate(SQLiteDatabase db) {
437 final String SQL_CREATE_ITEMLIST_TABLE = "CREATE TABLE " + ItemEntry.TABLE_NAME + " (" +
438 ItemEntry.COLUMN_LABEL + " TEXT NOT NULL, " +
439 ItemEntry.COLUMN_DETAIL + " TEXT, " +
440 ItemEntry.COLUMN_AMOUNT + "DOUBLE NOT NULL" +
441 ");";
442
443 db.execSQL(SQL_CREATE_ITEMLIST_TABLE);
444 }
445
446 @Override
447 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
448 db.execSQL("DROP TABLE IF EXISTS " + ItemEntry.TABLE_NAME);
449 onCreate(db);
450 }
451}
452
453package com.example.admin.test2;
454
455import android.provider.BaseColumns;
456
457public class ItemContract {
458
459 private ItemContract() {}
460
461 public static final class ItemEntry implements BaseColumns
462 {
463 public static final String TABLE_NAME = "itemList";
464 public static final String COLUMN_LABEL = "label";
465 public static final String COLUMN_AMOUNT = "amount";
466 public static final String COLUMN_DETAIL = "detail";
467
468 }
469}
470
471E/SQLiteLog: (1) table itemList has no column named amount
472E/SQLiteDatabase: Error inserting amount=500.0 label=Food & Drink detail=jsjdjdj
473 android.database.sqlite.SQLiteException: table itemList has no column named amount (code 1): , while compiling: INSERT INTO itemList(amount,label,detail) VALUES (?,?,?)
474 #################################################################
475 Error Code : 1 (SQLITE_ERROR)
476 Caused By : SQL(query) error or missing database.
477 (table itemList has no column named amount (code 1): , while compiling: INSERT INTO itemList(amount,label,detail) VALUES (?,?,?))
478 #################################################################
479 at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
480 at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1096)
481 at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:661)
482 at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
483 at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
484 at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
485 at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1902)
486 at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1771)
487 at com.example.admin.test2.Expense$1.onClick(Expense.java:94)
488 at android.view.View.performClick(View.java:6897)
489 at android.view.View$PerformClick.run(View.java:26101)
490 at android.os.Handler.handleCallback(Handler.java:789)
491 at android.os.Handler.dispatchMessage(Handler.java:98)
492 at android.os.Looper.loop(Looper.java:164)
493 at android.app.ActivityThread.main(ActivityThread.java:6944)
494 at java.lang.reflect.Method.invoke(Native Method)
495 at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
496 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374).... this continues