· 8 years ago · Aug 30, 2018, 11:48 PM
1android how to write drag n drop for my given application
2private final Context context;
3private DatabaseHelper DBHelper;
4private SQLiteDatabase db;
5
6// Set the Tables Key Words
7public static final String TABLE_TASKS = "tasks";
8
9// Table Queries
10private static final String CREATE_TASKS = "CREATE TABLE tasks (_id INTEGER PRIMARY KEY AUTOINCREMENT, todo TEXT, date_create TEXT, date_completed TEXT, completed INTEGER, orderId INTEGER NOT NULL);";
11
12// Keys
13public static final String ID = "_id";
14public static final String KEY_TODO = "todo";
15public static final String KEY_DATECREATE = "date_create";
16public static final String KEY_DATECOMPLETED = "date_completed";
17public static final String KEY_COMPLETED = "completed";
18public static final String KEY_ORDER = "orderId";
19
20public DBAdapter(Context ctx) {
21 this.context = ctx;
22 DBHelper = new DatabaseHelper(context);
23}
24
25private static class DatabaseHelper extends SQLiteOpenHelper {
26
27 public DatabaseHelper(Context context) {
28 super(context, DB_NAME, null, DATABASE_VER);
29 }
30
31 @Override
32 public void onCreate(SQLiteDatabase db) {
33 db.execSQL(CREATE_TASKS);
34 }
35
36 @Override
37 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
38 Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
39 + newVersion + ", which will destroy all old data");
40 db.execSQL("DROP TABLE IF EXISTS Tasks");
41 onCreate(db);
42 }
43
44}
45
46public DBAdapter open() throws SQLException {
47 db = DBHelper.getWritableDatabase();
48
49 return this;
50}
51
52public void close() {
53 DBHelper.close();
54}
55
56// Custom Methods
57
58// Insert data to Task table
59public long insertINtask(String taskNm, String dtCreate, String dtComplete,
60 int completed, int order) {
61 ContentValues initialValues = new ContentValues();
62 initialValues.put(KEY_TODO, taskNm);
63 initialValues.put(KEY_DATECREATE, dtCreate);
64 initialValues.put(KEY_DATECOMPLETED, dtComplete);
65 initialValues.put(KEY_COMPLETED, completed);
66 initialValues.put(KEY_ORDER, order);
67 return db.insert(TABLE_TASKS, null, initialValues);
68}
69
70// Get Last priority
71public int getLastPriority() {
72 int maxOrder = 0;
73 boolean flag = false;
74 Cursor cr=null;
75 try{
76 cr = db.rawQuery("select max(" + KEY_ORDER + ") from "
77 + TABLE_TASKS, null);
78 cr.moveToFirst();
79 System.out.println("rawQuery: " + "select max(" + KEY_ORDER + ") from "
80 + TABLE_TASKS);
81 System.out.println("Max order= " + cr.getString(0));
82 if (cr.getString(0) == null)
83 maxOrder = 0;
84 else
85 maxOrder = Integer.parseInt(cr.getString(0));
86 } catch (Exception ex) {
87 System.out.println("Within DBAdapter " + ex.toString());
88 } finally {
89 cr.close();
90 }
91 return maxOrder;
92
93}
94
95// Get Uncompleted Tasks
96public Cursor getUncompletedTask() {
97 Cursor c = db.query(TABLE_TASKS, new String[] { ID, KEY_TODO },
98 KEY_COMPLETED + "= 0", null, null, null, null, null);
99 c=db.query(TABLE_TASKS, new String[]{ID,KEY_TODO},KEY_COMPLETED + "= 0", null, null, null, KEY_ORDER + " ASC" ,null);
100 return c;
101}
102
103// Get Completed Tasks
104public Cursor getCompletedTask() {
105 return db.query(TABLE_TASKS, new String[] { ID, KEY_TODO },
106 KEY_COMPLETED + "= 1", null, null, null, null, null);
107}
108
109// Get Task Id
110public Cursor getTask_ID(String taskNm) {
111 return db.query(TABLE_TASKS, new String[] { ID, KEY_TODO }, KEY_TODO
112 + "= '" + taskNm + "'", null, null, null, null, null);
113}
114
115// Get Task-Name
116public Cursor getTask_Name(int TID) {
117 return db.query(TABLE_TASKS, new String[] { ID, KEY_TODO }, ID + "= "
118 + TID, null, null, null, null, null);
119}
120
121//Get Order
122public Cursor getOrder(int TID) {
123 return db.query(TABLE_TASKS, new String[] { ID, KEY_ORDER }, ID + "= "
124 + TID, null, null, null, null, null);
125}
126// Edit Task-Name
127public boolean updateTaskNm(int TID, String taskNm) {
128 ContentValues initialValues = new ContentValues();
129 initialValues.put(KEY_TODO, taskNm);
130 return db.update(TABLE_TASKS, initialValues, ID + "=" + TID, null) > 0;
131}
132
133// Delete a record
134public boolean deleteTask(int TID) {
135 return db.delete(TABLE_TASKS, ID + "=" + TID, null) > 0;
136}
137
138// Make Unmark to a task
139public boolean unMarkTask(int TID,String dtCreate) {
140 ContentValues initialValues = new ContentValues();
141 initialValues.put(KEY_COMPLETED, 0);
142 initialValues.put(KEY_DATECREATE, dtCreate);
143 return db.update(TABLE_TASKS, initialValues, ID + "=" + TID, null) > 0;
144}
145
146// Set Task complete
147public boolean setTaskComplete(int TID, String dtComplete) {
148 ContentValues initialValues = new ContentValues();
149 initialValues.put(KEY_COMPLETED, 1);
150 initialValues.put(KEY_DATECOMPLETED, dtComplete);
151 return db.update(TABLE_TASKS, initialValues, ID + "=" + TID, null) > 0;
152}
153
154//Update Order
155public boolean setOrder(int OId,int TID) {
156 System.out.println("==== OID="+OId+" TID="+TID);
157 if(db==null)
158 db = DBHelper.getWritableDatabase();
159
160 if(!db.isOpen())
161 open();
162
163 boolean f=false;
164 ContentValues initialValues = new ContentValues();
165 initialValues.put(KEY_ORDER, OId);
166 db.execSQL("update "+TABLE_TASKS+" set "+KEY_ORDER+"="+OId+" where _id="+TID);
167 //f= db.update(TABLE_TASKS, initialValues, ID + "=" + TID, null) > 0;
168
169 return f;
170}
171//Get orders between--Not used
172public Cursor getBetweenOrders(int fOrder,int tOrder) {
173 return db.query(TABLE_TASKS, new String[] { ID, KEY_ORDER }, KEY_ORDER + " BETWEEN "+fOrder +" AND "+tOrder, null, null, null, null, null);
174}
175
176//Update all orders--not used
177public boolean setAllOrders(int[] TID, int[] orderid,int count) {
178 boolean f=false;
179 ContentValues initialValues = new ContentValues();
180 for(int i=0;i<count;i++)
181 {
182 initialValues.put(KEY_ORDER, orderid[i]);
183 f= db.update(TABLE_TASKS, initialValues, ID + "=" + TID[i], null) > 0;
184 }
185 return f;
186}
187
188String date = "", time = "", dateTime = "";
189// ArrayList al = new ArrayList();
190static ArrayList<Task> m_tasks = new ArrayList<Task>(), t_tasks = null;
191TaskAdapter m_adapter;
192
193/** Called when the activity is first created. */
194@Override
195public void onCreate(Bundle savedInstanceState) {
196 super.onCreate(savedInstanceState);
197 setContentView(R.layout.main);
198 this.setTitle("To-Do Lists");
199
200 btnAdd = (Button) findViewById(R.id.btnAdd);
201 edTask = (EditText) findViewById(R.id.etAddTask);
202 edTask.setOnFocusChangeListener(new OnFocusChangeListener() {
203 @Override
204 public void onFocusChange(View v, boolean hasFocus) {
205 if (hasFocus == true) {
206 if (edTask.getText().toString()
207 .compareTo("Add task here...") == 0) // default text
208 {
209 edTask.setText("");
210 }
211 }
212 }
213 });
214
215 db = new DBAdapter(HomeActivity.this);
216 m_tasks = getTasks();
217
218 if (m_tasks.size() != 0) {
219 this.m_adapter = new TaskAdapter(this, R.layout.addchecktomain,
220 m_tasks);
221 // lv1.setAdapter(this.m_adapter);
222 System.out.println("creating");
223 setListAdapter(this.m_adapter);
224 } else {
225
226 RelativeLayout rl = (RelativeLayout) findViewById(R.id.layout);
227 TextView tv = new TextView(this);
228 tv.setText("No To-Do Lists");
229 tv.setTextSize(22);
230 rl.addView(tv);
231 }
232 mYear = c.get(Calendar.YEAR);
233 mMonth = c.get(Calendar.MONTH);
234 mDay = c.get(Calendar.DAY_OF_MONTH);
235 mHour = c.get(Calendar.HOUR_OF_DAY);
236 mMinute = c.get(Calendar.MINUTE);
237
238
239 btnAdd.setOnClickListener(new View.OnClickListener() {
240 public void onClick(View v) {
241
242 newTask = edTask.getText().toString();
243
244 String min = Integer.toString(c.get(Calendar.MINUTE));
245 String hr = Integer.toString(c.get(Calendar.HOUR));
246 String dd = Integer.toString(c.get(Calendar.DATE));
247 String mm = Integer.toString(c.get(Calendar.MONTH));
248 String yyyy = Integer.toString(c.get(Calendar.YEAR));
249 if (min.length() == 1)
250 min = "0" + min;
251 if (hr.length() == 1)
252 hr = "0" + hr;
253 if (dd.length() == 1)
254 dd = "0" + dd;
255 if (mm.length() == 1)
256 mm = "0" + mm;
257 String dtCreate = mm + "-" + dd + "-" + yyyy + " " + hr + ":"
258 + min;
259 if (newTask.equals("")) {
260 alertboxNeutral("Warning", "Task should not be empty!",
261 "Okay");
262 }
263 else if (newTask.length() < 2) {
264 alertboxNeutral("Warning",
265 "Task should not be less than 2 Letters", "Okay");
266 } else {
267 try {
268 db.open();
269 long id1;
270 order = db.getLastPriority();
271 if (order == 0)
272 id1 = db.insertINtask(newTask, dtCreate, null, 0, 1);
273 else
274 id1 = db.insertINtask(newTask, dtCreate, null, 0,
275 order + 1);
276
277 } catch (Exception ex) {
278 System.out.println("Within AddTask HomeActivity " + ex.toString());
279 } finally {
280 db.close();
281 }
282 alertboxNeutral("Success", "Saved.", "Okay");
283 }
284 }
285 });
286}
287
288// Method to fetch Uncompleted tasks from db with ID
289public ArrayList<Task> getTasks() {
290 t_tasks = new ArrayList<Task>();
291 try {
292 db.open();
293 cr = db.getUncompletedTask();
294 if (cr.moveToFirst()) {
295 do {
296 Task t1 = new Task();
297 String[] str = new String[2];
298 str[0] = cr.getString(0);
299 str[1] = cr.getString(1);
300 t1.setTaskID(cr.getString(0));
301 t1.setTaskName(cr.getString(1));
302 t_tasks.add(t1);
303 } while (cr.moveToNext());
304 }
305 } catch (Exception ex) {
306 System.out.println("Within Home " + ex.toString());
307 } finally {
308 cr.close();
309 db.close();
310 }
311
312 return t_tasks;
313}
314
315@Override
316public void onCreateContextMenu(ContextMenu menu, View v,
317 ContextMenuInfo menuInfo) {
318 super.onCreateContextMenu(menu, v, menuInfo);
319 AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
320 menu.setHeaderTitle("Task");
321 MenuInflater inflater = getMenuInflater();
322 inflater.inflate(R.menu.context_menu, menu);
323 System.out.println("v.getId=" + v.getId());
324 Task_Id = (Integer) v.getTag();
325
326}
327
328@Override
329public boolean onContextItemSelected(MenuItem item) {
330 AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
331 .getMenuInfo();
332
333 switch (item.getItemId()) {
334 case R.id.edit_task:
335 Intent i1 = new Intent(HomeActivity.this, EditTaskActivity.class);
336 i1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
337 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
338 startActivity(i1);
339
340 return true;
341 case R.id.delete_task:
342 // database functions
343 boolean f = false;
344 try {
345 db.open();
346 f = db.deleteTask(Task_Id);
347 } catch (Exception ex) {
348 System.out.println("Within Home " + ex.toString());
349 } finally {
350 db.close();
351 }
352 if (f == true)
353 alertboxNeutral("Success", "Deleted.", "Okay");
354 return true;
355 default:
356 return super.onContextItemSelected(item);
357 }
358}
359
360public void alertboxNeutral(String title, String message, String positive) {
361 AlertDialog.Builder alertbox = new AlertDialog.Builder(
362 HomeActivity.this);
363 if (title.equals("Warning")) {
364 alertbox.setTitle(title);
365 alertbox.setMessage(message);
366 alertbox.setPositiveButton(positive,
367 new DialogInterface.OnClickListener() {
368 public void onClick(DialogInterface dialog, int id) {
369 Intent i = new Intent(HomeActivity.this,
370 HomeActivity.class);
371 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
372 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
373 startActivity(i);
374 }
375 });
376 alertbox.show();
377 } else if (title.equals("Success")) {
378 alertbox.setTitle(title);
379 alertbox.setMessage(message);
380 alertbox.setPositiveButton(positive,
381 new DialogInterface.OnClickListener() {
382 public void onClick(DialogInterface dialog, int id) {
383 Intent i = new Intent(HomeActivity.this,
384 HomeActivity.class);
385 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
386 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
387 startActivity(i);
388 }
389 });
390 alertbox.show();
391 }
392}
393
394@Override
395public boolean onCreateOptionsMenu(Menu menu) {
396 MenuInflater inflater = getMenuInflater();
397 inflater.inflate(R.menu.main, menu);
398 return true;
399}
400
401@Override
402public boolean onOptionsItemSelected(MenuItem item) {
403 switch (item.getItemId()) {
404
405 case R.id.add_task:
406 Intent i1 = new Intent(this, AddTaskActivity.class);
407 i1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
408 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
409 startActivity(i1);
410 break;
411 case R.id.list_completed:
412 Intent i2 = new Intent(this, ListCompletedActivity.class);
413 i2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
414 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
415 startActivity(i2);
416 break;
417 case R.id.rearrange:
418 Intent i3 = new Intent(this, RearrangeActivity.class);
419 i3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
420 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
421 startActivity(i3);
422 break;
423 case R.id.exit:
424 Intent intent = new Intent(Intent.ACTION_MAIN);
425 intent.addCategory(Intent.CATEGORY_HOME);
426 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
427 startActivity(intent);
428 break;
429 }
430
431 return true;
432}
433
434/*
435 * @Override protected void onPause() { // TODO Auto-generated method stub
436 * super.onPause(); finish(); }
437 */
438
439@Override
440protected void onResume() {
441 // TODO Auto-generated method stub
442 try {
443 db.open();
444 m_tasks = getTasks();
445 } catch (Exception ex) {
446 System.out.println("Within Home " + ex.toString());
447 } finally {
448 db.close();
449 }
450 m_adapter = new TaskAdapter(this, R.layout.addchecktomain, m_tasks);
451
452 System.out.println("notify data changed");
453 // m_adapter.notifyDataSetInvalidated();
454 // m_adapter.notifyDataSetChanged();
455 setListAdapter(this.m_adapter);
456 super.onResume();
457
458}
459
460/*
461 * @Override public void onBackPressed() { // TODO Auto-generated method
462 * stub db.open(); m_tasks = getTasks(); db.close();
463 * System.out.println("notify data changed on back pressed");
464 * m_adapter.notifyDataSetInvalidated(); m_adapter.notifyDataSetChanged();
465 * super.onBackPressed(); }
466 */
467 @Override
468 protected Dialog onCreateDialog(int id) {
469 switch (id) {
470 case TIME_DIALOG_ID:
471 return new TimePickerDialog(this,
472 mTimeSetListener, mHour, mMinute, false);
473 case DATE_DIALOG_ID:
474 return new DatePickerDialog(this,
475 mDateSetListener,
476 mYear, mMonth, mDay);
477 }
478 return null;
479 }
480 @Override
481 protected void onPrepareDialog(int id, Dialog dialog) {
482 switch (id) {
483 case TIME_DIALOG_ID:
484 ((TimePickerDialog) dialog).updateTime(mHour, mMinute);
485 break;
486 case DATE_DIALOG_ID:
487 ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
488 break;
489 }
490 }
491
492private void updateDisplay() {
493 //edTask.setText(new StringBuilder().append(mMonth + 1).append("-").append(mDay).append("-").append(mYear).append(" ").append(pad(mHour)).append(":").append(pad(mMinute)));
494
495 c.setTimeInMillis(System.currentTimeMillis());
496 c.clear();
497 c.set(Calendar.YEAR, mYear);
498 c.set(Calendar.MONTH, mMonth);
499 c.set(Calendar.DAY_OF_MONTH, mDay);
500 c.set(Calendar.HOUR, mHour);
501 c.set(Calendar.MINUTE, mMinute);
502 Intent activate = new Intent(this, getClass());
503 AlarmManager alarams ;//= (AlarmManager) this.getSystemService(ALARM_SERVICE);
504 PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, activate, 0);
505 alarams = (AlarmManager) getSystemService(this.ALARM_SERVICE);
506 alarams.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), alarmIntent);
507
508 /*Intent intent = new Intent(this, MyBroadcastReceiver.class);
509 PendingIntent pendingIntent = PendingIntent.getBroadcast(
510 this.getApplicationContext(), 234324243, intent, 0);
511 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
512 alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis()
513 + (10 * 1000), pendingIntent);*/
514 Toast.makeText(this, "Alarm set in 10 seconds", Toast.LENGTH_LONG).show();
515
516
517}
518
519 private DatePickerDialog.OnDateSetListener mDateSetListener =
520 new DatePickerDialog.OnDateSetListener() {
521
522 public void onDateSet(DatePicker view, int year, int monthOfYear,
523 int dayOfMonth) {
524 mYear = year;
525 mMonth = monthOfYear;
526 mDay = dayOfMonth;
527 updateDisplay();
528 }
529 };
530
531 private TimePickerDialog.OnTimeSetListener mTimeSetListener =
532 new TimePickerDialog.OnTimeSetListener() {
533
534 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
535 mHour = hourOfDay;
536 mMinute = minute;
537 updateDisplay();
538 }
539 };
540
541 private static String pad(int c) {
542 if (c >= 10)
543 return String.valueOf(c);
544 else
545 return "0" + String.valueOf(c);
546 }
547
548public TaskAdapter(Context context, int textViewResourceId,
549 ArrayList<Task> tasks) {
550 super(context, textViewResourceId, tasks);
551 this.tasks = tasks;
552 context1 = context;
553 RId = textViewResourceId;
554}
555
556public int getCount() {
557 return tasks.size();
558}
559
560public Task getItem(int position) {
561 return tasks.get(position);
562}
563
564public long getItemId(int position) {
565 return position;
566}
567
568public View getView(int position, View convertView, ViewGroup parent) {
569 final int pos = position;
570 final int dbid;
571 View v = convertView;
572 ViewHolder holder;
573 Task t = tasks.get(position);
574
575 if (v == null) {
576 LayoutInflater vi = (LayoutInflater) context1
577 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
578 v = vi.inflate(R.layout.addchecktomain, null);
579
580 holder = new ViewHolder();
581 //holder.text = (TextView) v.findViewById(t.getTaskId());
582 v.setTag(holder);
583 } else {
584 // Get the ViewHolder back to get fast access to the TextView
585 // and the ImageView.
586 System.out.println(convertView.getTag());
587 holder = (ViewHolder) convertView.getTag();
588 }
589
590 if (t != null) {
591 chk = (CheckBox) v.findViewById(R.id.cboTask);
592 tv = (TextView) v.findViewById(R.id.tvTask);
593 imgAlram = (ImageView) v.findViewById(R.id.imageAlram);
594
595 if (chk != null) {
596 chk.setId(Integer.parseInt(t.getTaskId()));
597
598 chk.setText("");
599 // chk.setTag(Integer.parseInt(t.getTaskId()), t.getTaskName());
600
601 chk.setOnCheckedChangeListener(new OnCheckedChangeListener() {
602 public void onCheckedChanged(CompoundButton buttonView,
603 boolean isChecked) {
604 int taskId = buttonView.getId();
605 if (isChecked) {
606 // /call setTaskComplete(i)
607 // / reset list view or refresh list view
608 String min = Integer.toString(c
609 .get(Calendar.MINUTE));
610 String hr = Integer.toString(c.get(Calendar.HOUR));
611 String dd = Integer.toString(c.get(Calendar.DATE));
612 String mm = Integer.toString(c.get(Calendar.MONTH));
613 String yyyy = Integer.toString(c.get(Calendar.YEAR));
614 if (min.length() == 1)
615 min = "0" + min;
616 if (hr.length() == 1)
617 hr = "0" + hr;
618 if (dd.length() == 1)
619 dd = "0" + dd;
620 if (mm.length() == 1)
621 mm = "0" + mm;
622 String dtComplete = mm + "-" + dd + "-" + yyyy
623 + " " + hr + ":" + min;
624 try {
625 db = new DBAdapter(context1);
626 db.open();
627 f = db.setTaskComplete(taskId, dtComplete);
628 } catch (Exception ex) {
629 System.out.println("Within Home "
630 + ex.toString());
631 } finally {
632 db.close();
633 }
634 if (f == true) {
635 // HomeActivity.referesh = 1;
636 Intent intent = new Intent(context1,
637 HomeActivity.class);
638 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
639 | Intent.FLAG_ACTIVITY_CLEAR_TOP);
640 // HomeActivity.
641 context1.startActivity(intent);
642 Toast.makeText(context1, "Task Completed",
643 Toast.LENGTH_LONG).show();
644 }
645 }
646 }
647 });
648 }
649 if (tv != null) {
650 tv.setText(t.getTaskName());
651 dbid = Integer.parseInt(t.getTaskId());
652 tv.setTag(dbid);
653
654 tv.setOnClickListener(new OnClickListener() {
655 public void onClick(View v) {
656 Toast.makeText(
657 context1,
658 "You have chosen the task: " + " "
659 + v.getTag().toString() + " Id: "
660 + dbid + "::" + pos, Toast.LENGTH_LONG)
661 .show();
662 tv.setHighlightColor(android.graphics.Color.RED);
663 }
664 });
665 ((Activity) context1).registerForContextMenu(tv);
666 }
667 if (imgAlram != null) {
668 imgAlram.setOnClickListener(new OnClickListener() {
669 public void onClick(View v) {
670 // Write ur code here
671 Toast.makeText(context1, "You have chosen the Alram ",
672 Toast.LENGTH_LONG).show();
673 ((Activity) context1).showDialog(DATE_DIALOG_ID);
674 ((Activity) context1).showDialog(TIME_DIALOG_ID);
675 }
676 });
677 }
678 }
679 return v;
680}
681
682static class ViewHolder {
683 TextView text;
684}