· 10 years ago · Sep 26, 2016, 05:16 PM
1activity_main.xml
2==================
3<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:orientation="vertical"
7 android:layout_margin="10dp">
8
9 <EditText
10 android:layout_width="match_parent"
11 android:layout_height="wrap_content"
12 android:textSize="30sp"
13 android:hint="enter task name..."
14 android:id="@+id/etTask"/>
15
16 <Button
17 android:layout_width="match_parent"
18 android:layout_height="wrap_content"
19 android:text="ADD TASK"
20 android:id="@+id/btnAdd"
21 />
22
23 <Button
24 android:layout_width="match_parent"
25 android:layout_height="wrap_content"
26 android:text="COUNT TASKS...."
27 android:id="@+id/btnCount"/>
28
29 <Button
30 android:layout_width="match_parent"
31 android:layout_height="wrap_content"
32 android:text="Display tasks..."
33 android:id="@+id/btnDisplay"/>
34
35 <Button
36 android:layout_width="match_parent"
37 android:layout_height="wrap_content"
38 android:text="make all done.."
39 android:id="@+id/btnDone"/>
40
41 <Button
42 android:layout_width="match_parent"
43 android:layout_height="wrap_content"
44 android:text="delete all"
45 android:id="@+id/btnReset"/>
46
47 <ListView
48 android:layout_width="match_parent"
49 android:layout_height="match_parent"
50 android:id="@+id/lstTask"></ListView>
51</LinearLayout>
52
53
54MainActivity.java
55=====================
56package com.example.zeevm.mytasksql;
57
58import android.content.Context;
59import android.database.Cursor;
60import android.support.v7.app.AppCompatActivity;
61import android.os.Bundle;
62import android.view.View;
63import android.widget.AdapterView;
64import android.widget.Button;
65import android.widget.EditText;
66import android.widget.ListView;
67import android.widget.Toast;
68
69import java.util.ArrayList;
70import java.util.List;
71
72public class MainActivity extends AppCompatActivity {
73
74 EditText taskName;
75 Button btnAdd;
76 Button btnCount;
77 Button btnDisplay;
78 Button btnDone;
79 Button btnReset;
80
81 UtlSQL sql;
82 ListView lstTask;
83 final String TABLE_NAME="zeev";
84 Context context;
85
86 @Override
87 protected void onCreate(Bundle savedInstanceState) {
88 super.onCreate(savedInstanceState);
89 setContentView(R.layout.activity_main);
90 setPointer();
91 }
92
93 private void setPointer()
94 {
95 this.context=this;
96 lstTask=(ListView)findViewById(R.id.lstTask);
97 //create instance for the sql
98 sql=new UtlSQL(this,this.TABLE_NAME);
99 //set pointers
100 taskName=(EditText)findViewById(R.id.etTask);
101 btnAdd=(Button)findViewById(R.id.btnAdd);
102 btnCount=(Button)findViewById(R.id.btnCount);
103 btnDisplay=(Button)findViewById(R.id.btnDisplay);
104 btnDone=(Button)findViewById(R.id.btnDone);
105 btnReset=(Button)findViewById(R.id.btnReset);
106
107 btnAdd.setOnClickListener(new View.OnClickListener() {
108 @Override
109 public void onClick(View view) {
110 if (sql.newTask(taskName.getText().toString()))
111 {
112 taskName.setText("");
113 Toast.makeText(MainActivity.this, "data was saved", Toast.LENGTH_SHORT).show();
114 }
115 else
116 {
117 Toast.makeText(MainActivity.this, "error in data saving", Toast.LENGTH_SHORT).show();
118 }
119
120 }
121 });
122
123 btnCount.setOnClickListener(new View.OnClickListener() {
124 @Override
125 public void onClick(View view) {
126 //display the count
127 Cursor res = sql.getTasks();
128 Toast.makeText(MainActivity.this, "Total:"+res.getCount(), Toast.LENGTH_SHORT).show();
129 }
130 });
131
132 btnDisplay.setOnClickListener(new View.OnClickListener() {
133 @Override
134 public void onClick(View view) {
135 //create a list for the sqlAdapter
136 List<String> myTaskList= new ArrayList<String>();
137
138 //get data from sql and put the raw data into cursor
139 String resDisp="";
140 Cursor res=sql.getTasks();
141 //check if we have some data
142 if (res.getCount()==0)
143 {
144 Toast.makeText(MainActivity.this, "we don't have any info", Toast.LENGTH_SHORT).show();
145 return;
146 }
147 //read while we have next item in line....
148 while (res.moveToNext())
149 {
150 resDisp+=res.getString(1)+" , ";
151 myTaskList.add(res.getString(1)+" "+(res.getInt(2)==1?"DONE":"UNDONE")+" "+res.getString(3));
152 }
153 //connect our ready list to our list view
154 sqlAdapter adapter = new sqlAdapter(context,myTaskList);
155 lstTask.setAdapter(adapter);
156 Toast.makeText(MainActivity.this, resDisp, Toast.LENGTH_SHORT).show();
157 }
158 });
159
160 btnDone.setOnClickListener(new View.OnClickListener() {
161 @Override
162 public void onClick(View view) {
163 sql.updateAllDoneSQL();
164 }
165 });
166
167 btnReset.setOnClickListener(new View.OnClickListener() {
168 @Override
169 public void onClick(View view) {
170 sql.deleteAll();
171 Toast.makeText(MainActivity.this, "ALL WAS DELETED", Toast.LENGTH_SHORT).show();
172 }
173 });
174
175 lstTask.setOnItemClickListener(new AdapterView.OnItemClickListener() {
176 @Override
177 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
178 sql.updateStatusSQL((i+1),true);
179 }
180 });
181
182 lstTask.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
183 @Override
184 public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
185
186 sql.deleteSQL(i+1);
187 Toast.makeText(MainActivity.this, "item was deleted", Toast.LENGTH_SHORT).show();
188 return true;
189
190 /*
191 Toast.makeText(MainActivity.this, "item was deleted", Toast.LENGTH_SHORT).show();
192 return sql.deleteMe(i+1);
193 */
194 }
195 });
196 }
197}
198
199
200UtlSQL.java
201====================
202package com.example.zeevm.mytasksql;
203
204import android.content.ContentValues;
205import android.content.Context;
206import android.database.Cursor;
207import android.database.sqlite.SQLiteDatabase;
208import android.database.sqlite.SQLiteOpenHelper;
209import android.database.sqlite.SQLiteStatement;
210
211import java.util.Date;
212
213/**
214 * Created by zeevm on 9/26/2016.
215 */
216public class UtlSQL extends SQLiteOpenHelper {
217 //DB FILE NAME
218 public static final String DB_NAME="tasks.db";
219 //name of the table
220 public String table_name;
221 //create DB instance
222 SQLiteDatabase db;
223 //transfer context
224 Context context;
225
226 //constractur
227 public UtlSQL(Context context,String table_name)
228 {
229 //pass to abstract class (context, name of DB file,null (we don't use cursor factory),version (1))
230 super(context,DB_NAME,null,1);
231 //set the fields
232 this.context=context;
233 this.table_name=table_name;
234 //give permission to read and write to the database.....
235 db=this.getWritableDatabase();
236 }
237
238 @Override
239 public void onCreate(SQLiteDatabase db) {
240 //create table If not Exists
241 db.execSQL("CREATE TABLE IF NOT EXISTS "+table_name+" (id INTEGER PRIMARY KEY AUTOINCREMENT,taskName TEXT,status INTEGER,taskDate TEXT)");
242 }
243
244 @Override
245 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
246 //do not touch
247 //db.exeSQL("DROP TABLE IF EXISTS (table_name)");
248 }
249
250 //METHOD I - for insert data
251 public boolean newTask(String newTask)
252 {
253 ContentValues contentValues = new ContentValues();
254 contentValues.put("taskName",newTask);
255 contentValues.put("status",0);
256 contentValues.put("taskDate",new Date().toString());
257 long res=db.insert(table_name,null,contentValues); //if we get -1, we had error, data was not saved.....
258 return !(res<0);
259 }
260
261 //METHOD II - for insert data , SQL style
262 public boolean newTaskSQL(String newTask)
263 {
264 //insert into table_name (fields) (values)
265 String sql = "INSERT INTO "+table_name //insert into table name
266 + "(taskName,status,taskDate)" //choose the fields to insert to
267 + " ('"+newTask+"',0,'"+(new Date().toString())+"')"; //insert the values
268 //we are compiling the string sql to SQL statment
269 SQLiteStatement statement=db.compileStatement(sql);
270 long res=statement.executeInsert();
271 //return true if res>=0 , else return false since res=(-1)
272 return !(res<0);
273 }
274
275 //get all task
276 public Cursor getTasks()
277 {
278 Cursor res=db.rawQuery("SELECT * FROM "+table_name,null);
279 return res;
280 }
281
282 //change the status of the task using contentValues
283 public boolean updateStatus(int id, String taskName, boolean taskStatus, String taskDate)
284 {
285 //create instance of content values..
286 ContentValues contentValues=new ContentValues();
287 contentValues.put("id",id);
288 contentValues.put("taskName",taskName);
289 contentValues.put("status",(taskStatus?1:0));
290 contentValues.put("taskDate",taskDate);
291 //update the database
292 long res=db.update(table_name,contentValues,"id = ?",new String[] {id+""});
293 //return the result
294 return res!=-1;
295 }
296
297 //change the status of the task (undone->done)
298 public void updateStatusSQL(int id,boolean taskStatus)
299 {
300 //sql statment for running update command
301 String sql ="UPDATE "+table_name+" SET status="+(taskStatus?1:0)+" WHERE id="+id;
302 //compile to sql command
303 SQLiteStatement statement=db.compileStatement(sql);
304 //execute the command
305 statement.execute();
306 }
307
308 public void updateAllDoneSQL()
309 {
310 //sql statment for running update command
311 String sql ="UPDATE "+table_name+" SET status=0";
312 //compile to sql command
313 SQLiteStatement statement=db.compileStatement(sql);
314 //execute the command
315 statement.execute();
316 }
317
318 //method in sql style - gangam style
319 public void deleteSQL(int id)
320 {
321 //sql statment for delete a task, gazuntai
322 String sql = "DELETE FROM "+table_name+" WHERE id="+id;
323 //compile to sql command
324 SQLiteStatement statement=db.compileStatement(sql);
325 //execute the command
326 statement.execute();
327
328 }
329
330 //method in content values style
331 public boolean deleteMe(int id)
332 {
333 //command to delete by id
334 long res=db.delete(table_name,"id = ?",new String[] {id+""});
335 //return false if res == -1;
336 return res!=-1;
337
338 }
339
340 public void deleteAll()
341 {
342 //sql statment for delete a task
343 String sql = "DELETE FROM "+table_name;
344 //compile to sql
345 SQLiteStatement statement=db.compileStatement(sql);
346 //execute
347 statement.execute();
348
349 }
350}
351
352
353
354sqlAdapter.java
355======================
356package com.example.zeevm.mytasksql;
357
358import android.content.Context;
359import android.database.Cursor;
360import android.view.View;
361import android.view.ViewGroup;
362import android.widget.BaseAdapter;
363import android.widget.TextView;
364
365import java.util.ArrayList;
366import java.util.List;
367
368/**
369 * Created by zeevm on 9/26/2016.
370 */
371public class sqlAdapter extends BaseAdapter {
372 Context context;
373 List<String> myTasks;
374
375 public sqlAdapter(Context context, List<String> myTasks) {
376 this.context = context;
377 this.myTasks = myTasks;
378 }
379
380 @Override
381 public int getCount() {
382 return myTasks.size();
383 }
384
385 @Override
386 public Object getItem(int i) {
387 return null;
388 }
389
390 @Override
391 public long getItemId(int i) {
392 return 0;
393 }
394
395 @Override
396 public View getView(int i, View view, ViewGroup viewGroup) {
397 TextView txt = new TextView(context);
398 txt.setText(myTasks.get(i));
399 txt.setTextSize(30);
400 return txt;
401 }
402
403
404
405}