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