· 8 years ago · Mar 26, 2018, 05:58 PM
1package com.example.dhruv.bills;
2import android.content.ContentValues;
3import android.content.Context;
4import android.database.Cursor;
5import android.database.SQLException;
6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteOpenHelper;
8import android.util.Log;
9public class DBAdapter {
10public static final String KEY_ROWID = "id";
11public static final String KEY_NAME = "name";
12public static final String KEY_AMOUNT = "amount";
13public static final String KEY_DUEDATE = "duedate";
14private static final String TAG = "DBAdapter";
15
16private static final String DATABASE_NAME = "billsdb";
17private static final String DATABASE_TABLE = "bills";
18private static final int DATABASE_VERSION = 2;
19
20private static final String DATABASE_CREATE =
21 "create table if not exists assignments (id integer primary key autoincrement, "
22 + "name VARCHAR not null, amount VARCHAR, duedate date );";
23
24// Replaces DATABASE_CREATE using the one source definition
25private static final String TABLE_CREATE =
26 "CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE + "(" +
27 KEY_ROWID + " INTEGER PRIMARY KEY, " + // AUTOINCREMENT NOT REQD
28 KEY_NAME + " DATE NOT NULL, " +
29 KEY_AMOUNT + " VARCHAR ," +
30 KEY_DUEDATE + " DATE " +
31 ")";
32
33private final Context context;
34
35private DatabaseHelper DBHelper;
36private SQLiteDatabase db;
37
38public DBAdapter(Context ctx)
39{
40 this.context = ctx;
41 DBHelper = new DatabaseHelper(context);
42}
43
44private static class DatabaseHelper extends SQLiteOpenHelper
45{
46 DatabaseHelper(Context context)
47 {
48 super(context, DATABASE_NAME, null, DATABASE_VERSION);
49 }
50
51 @Override
52 public void onCreate(SQLiteDatabase db)
53 {
54 db.execSQL(TABLE_CREATE); // NO need to encapsulate in try clause
55 }
56
57 @Override
58 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
59 {
60 Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
61 + newVersion + ", which will destroy all old data");
62 db.execSQL("DROP TABLE IF EXISTS contacts"); //????????
63 db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
64 onCreate(db);
65 }
66}
67
68//---opens the database---
69public DBAdapter open() throws SQLException
70{
71 db = DBHelper.getWritableDatabase();
72 return this;
73}
74
75//---closes the database---
76public void close()
77{
78 DBHelper.close();
79}
80
81//---insert a record into the database---
82public long insertRecord(String name, String amount, String duedate)
83{
84 ContentValues initialValues = new ContentValues();
85 initialValues.put(KEY_NAME, name);
86 initialValues.put(KEY_AMOUNT, amount);
87 initialValues.put(KEY_DUEDATE, duedate);
88 //return db.insert(DATABASE_TABLE, null, initialValues);
89 // Will return NULL POINTER EXCEPTION as db isn't set
90 // Replaces commented out line
91 return DBHelper.getWritableDatabase().insert(DATABASE_TABLE,
92 null,
93 initialValues
94 );
95}
96
97//---deletes a particular record---
98public boolean deleteContact(long rowId)
99{
100 return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
101}
102
103//---retrieves all the records--- SEE FOLLOWING METHOD
104public Cursor getAllRecords()
105{SQLiteDatabase db = DBHelper.getWritableDatabase();
106 String query ="SELECT * FROM " + DATABASE_TABLE;
107 Cursor data = db.rawQuery(query,null);
108 return data;
109}
110
111
112//As per getAllRecords but using query convenience method
113public Cursor getAllAsCursor() {
114 return DBHelper.getWritableDatabase().query(
115 DATABASE_TABLE,
116 null,null,null,null,null,null
117 );
118}
119public Cursor getItemID(String name) {
120 SQLiteDatabase db = DBHelper.getWritableDatabase();
121 String query = "SELECT " + KEY_ROWID + " FROM " + DATABASE_TABLE +
122 " WHERE " + KEY_NAME + " = '" + name + "'";
123 Cursor data = db.rawQuery(query, null);
124 return data;
125}
126//---retrieves a particular record--- THIS WILL NOT WORK - NO SUCH TABLE
127
128
129/* public Cursor getRecord()
130{String query1 ="SELECT * FROM" + KEY_TITLE;
131 Cursor mCursor = db.rawQuery(query1,null);
132 if (mCursor != null) {
133 mCursor.moveToFirst();
134 }
135 return mCursor;
136}*/
137
138// Retrieve a row (single) according to id
139public Cursor getRecordById(long id) {
140 return DBHelper.getWritableDatabase().query(
141 DATABASE_TABLE,
142 null,
143 KEY_ROWID + "=?",
144 new String[]{String.valueOf(id)},
145 null,null,null
146 );
147}
148
149
150//---updates a record---
151
152
153/* public boolean updateRecord(long rowId, String name, String amount, String duedate)
154{
155 ContentValues args = new ContentValues();
156 args.put(KEY_NAME, name);
157 args.put(KEY_AMOUNT, amount);
158 args.put(KEY_DUEDATE, duedate);
159 String whereclause = KEY_ROWID + "=?";
160 String[] whereargs = new String[]{String.valueOf(rowId)};
161 // Will return NULL POINTER EXCEPTION as db isn't set
162 //return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
163 // Replaces commented out line
164 return DBHelper.getWritableDatabase().update(DATABASE_TABLE,
165 args,
166 whereclause,
167 whereargs
168 ) > 0;
169}*/
170}
171
172package com.example.dhruv.bills;
173
174import android.content.Intent;
175import android.database.Cursor;
176import android.os.Bundle;
177import android.support.design.widget.FloatingActionButton;
178import android.support.design.widget.Snackbar;
179import android.support.v7.app.AppCompatActivity;
180import android.support.v7.widget.RecyclerView;
181import android.support.v7.widget.Toolbar;
182import android.util.Log;
183import android.view.View;
184import android.view.Menu;
185import android.view.MenuItem;
186import android.widget.AdapterView;
187import android.widget.ArrayAdapter;
188import android.widget.ListAdapter;
189import android.widget.ListView;
190import android.widget.Toast;
191import java.util.ArrayList;
192
193public class bills extends AppCompatActivity {
194DBAdapter dbAdapter;
195ListView mrecycleview;
196private static final String TAG ="assignments";
197@Override
198protected void onCreate(Bundle savedInstanceState) {
199 super.onCreate(savedInstanceState);
200 setContentView(R.layout.activity_bills);
201 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
202 setSupportActionBar(toolbar);
203 mrecycleview =(ListView) findViewById(R.id.mRecycleView);
204 dbAdapter = new DBAdapter(this);
205 // mlistview();
206 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
207 fab.setOnClickListener(new View.OnClickListener() {
208 @Override
209 public void onClick(View view) {
210 Intent i = new Intent(getApplicationContext(),Editbills.class);
211 startActivity(i);
212 }
213 });
214 mlistview();
215}
216
217@Override
218public boolean onCreateOptionsMenu(Menu menu) {
219 // Inflate the menu; this adds items to the action bar if it is present.
220 getMenuInflater().inflate(R.menu.menu_bills, menu);
221 return true;
222}
223
224@Override
225public boolean onOptionsItemSelected(MenuItem item) {
226 // Handle action bar item clicks here. The action bar will
227 // automatically handle clicks on the Home/Up button, so long
228 // as you specify a parent activity in AndroidManifest.xml.
229 int id = item.getItemId();
230
231 //noinspection SimplifiableIfStatement
232 if (id == R.id.action_settings) {
233 return true;
234 }
235
236 return super.onOptionsItemSelected(item);
237}
238
239
240 private void mlistview(){
241 Log.d(TAG,"mlistview:Display data in listview");
242 Cursor mCursor = dbAdapter.getAllRecords();
243 ArrayList<String> listData = new ArrayList<>();
244 while (mCursor.moveToNext()){
245 listData.add(mCursor.getString(1));
246 }
247 ListAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,listData);
248 mrecycleview.setAdapter(adapter);
249 mrecycleview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
250 @Override
251 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
252 String name = adapterView.getItemAtPosition(i).toString();
253 Log.d(TAG, "onItemClick: You Clicked on " + name);
254 Cursor data = dbAdapter.getItemID(name); //get the id associated with that name
255 int itemID = -1;
256 while(data.moveToNext()){
257 itemID = data.getInt(0);
258 }
259 if(itemID > -1){
260 Log.d(TAG, "onItemClick: The ID is: " + itemID);
261 Intent editScreenIntent = new Intent(bills.this, Editbills.class);
262 editScreenIntent.putExtra("id",itemID);
263 editScreenIntent.putExtra("name",name);
264 startActivity(editScreenIntent);
265
266 }
267 else{
268
269 }
270 }
271 });
272
273
274}
275}
276
277package com.example.dhruv.bills;
278
279import android.content.ContentValues;
280import android.content.Intent;
281import android.database.Cursor;
282import android.database.sqlite.SQLiteDatabase;
283import android.support.v7.app.AppCompatActivity;
284import android.os.Bundle;
285import android.util.Log;
286import android.view.View;
287import android.widget.ArrayAdapter;
288import android.widget.Button;
289import android.widget.EditText;
290import android.widget.ListView;
291import android.widget.Toast;
292
293
294import java.util.ArrayList;
295
296public class Editbills extends AppCompatActivity {
297Button button;
298private static final String Tag= "assignments";
299DBAdapter db = new DBAdapter(this);
300private String selectedName;
301private int selectedID;
302DBAdapter dbAdapter;
303private EditText editText,editText2,editText3;
304@Override
305protected void onCreate(Bundle savedInstanceState) {
306 super.onCreate(savedInstanceState);
307 setContentView(R.layout.activity_editbills);
308 button=(Button)findViewById(R.id.button);
309 editText =(EditText)findViewById(R.id.editText);
310 editText2=(EditText)findViewById(R.id.editText2);
311 editText3 =(EditText)findViewById(R.id.editText3);
312 //get the intent extra from the ListDataActivity
313 Intent receivedIntent = getIntent();
314
315 //now get the itemID we passed as an extra
316 selectedID = receivedIntent.getIntExtra("id",-1); //NOTE: -1 is just the default value
317
318 //now get the name we passed as an extra
319 selectedName = receivedIntent.getStringExtra("name");
320
321 //set the text to show the current selected name
322 editText.setText(selectedName);
323 button.setOnClickListener(new View.OnClickListener() {
324 @Override
325 public void onClick(View view) {
326 Log.d("test", "adding");
327 db.open();
328 long id = db.insertRecord(editText.getText().toString(), editText2.getText().toString(), editText3.getText().toString());
329 db.close();
330 Toast.makeText(Editbills.this," Added", Toast.LENGTH_LONG).show();
331 Intent q = new Intent(getApplicationContext(),bills.class);
332 startActivity(q);
333
334 }
335 });
336
337
338}
339
340}