Skip to content

Instantly share code, notes, and snippets.

@ajdeguzman
Last active August 29, 2015 14:03
Show Gist options
  • Save ajdeguzman/5fa09d48f241556407d6 to your computer and use it in GitHub Desktop.
Save ajdeguzman/5fa09d48f241556407d6 to your computer and use it in GitHub Desktop.
package com.example.mp1;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "dbTask";
private static final String TABLE_TASK = "tblTask";
private static final String FIELD_ID = "col_id";
private static final String FIELD_DESCRIPTION = "col_desc";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_TASK + "("
+ FIELD_ID + " INTEGER PRIMARY KEY," + FIELD_DESCRIPTION + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TASK);
onCreate(db);
}
void addTask(Task task) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FIELD_DESCRIPTION, task.getDesc());
db.insert(TABLE_TASK, null, values);
db.close();
}
public List<Task> getAllTasks() {
List<Task> contactList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TABLE_TASK;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Task contact = new Task();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setDesc(cursor.getString(1));
contactList.add(contact);
} while (cursor.moveToNext());
}
return contactList;
}
public void deleteTask(Task task) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_TASK, FIELD_ID + " = ?",
new String[] { String.valueOf(task.getID()) });
db.close();
}
public int updateTask(Task task) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FIELD_DESCRIPTION, task.getDesc());
// updating row
return db.update(TABLE_TASK, values, FIELD_ID + " = ?",
new String[] { String.valueOf(task.getID()) });
}
}
package com.example.mp1;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.TwoLineListItem;
public class MainActivity extends Activity {
EditText txtTask;
ListView lstTask;
DatabaseHandler db = new DatabaseHandler(this);
Task t = new Task();
SimpleAdapter adapter;
int position_id;
String description;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtTask = (EditText)findViewById(R.id.txtTask);
lstTask = (ListView)findViewById(R.id.lstTask);
lstTask.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
//pag long press ako sa listview ng isang item, tatawagin ko ang method na mgaPagpipipilian();
//na nagpapalabas ng alertdialog.
//kuning ang position_id galing kay text1 sa layout
position_id = Integer.parseInt(((TwoLineListItem) arg1).getText1().getText().toString());
//kuning ang description galing kay text2 sa layout
description = ((TwoLineListItem) arg1).getText2().getText().toString();
//tawagin ngayon si alertdialog
mgaPagpipipilian();
return false;
}
});
}
public void clickAdd(View v){
db.addTask(new Task(txtTask.getText().toString()));
txtTask.setText("");
populateList();
}
public void populateList(){
List<Task> task = db.getAllTasks();
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
for (Task ta : task) {
Map<String, String> datum = new HashMap<String, String>(2);
datum.put("id",ta.getID()+"");
datum.put("desc",ta.getDesc());
data.add(datum);
}
//gumamit ako ng SimpleAdapter para gamitin sa listview
//gumawa din ako ng customized na layout para yun ang gagamitin ni listview "listview_layout" na matatagpuan sa res>layout>listview_layout.xml
//dalawang TextView ang laman ni listview_layout, text1 at text2. si text1, laman nya yung id, si text2 laman nya yung description. tinago ko si text1 para hindi makita sa listview. ginamitan ko ng android:visibility="gone"
adapter = new SimpleAdapter(this, data, R.layout.listview_layout, new String[] {"id", "desc"},new int[] {android.R.id.text1, android.R.id.text2});
lstTask.setAdapter(adapter);
}
private void mgaPagpipipilian() {
//Gawa tayo ng alertdialog galing kay class na AlertDialog.Builder. Pangalanan nating adb.
AlertDialog.Builder adb = new AlertDialog.Builder(this);
//gawin nating cancelable ang dialog. ibig sabihin, pag pumindot sa labas si user, matatanggal ang alertdialog
adb.setCancelable(true);
//Lagyan ng title ang Dialog Box
adb.setTitle("Please select option");
//Nilagyan ng item ang dialog box, ang items ay galing sa res>values>string
adb.setItems(R.array.array_pagpipilian, new DialogInterface.OnClickListener() {
@Override
//laman laman ni item yung index na pinindot mo sa alert dialog
public void onClick(DialogInterface dialog, int item) {
//laman laman ni item yung index na pinindot mo sa alert dialog
switch (item) {
case 0:
//pag pinindot si index 0, which is yung unang item, which is Edit, ano mangyayari?
editItem(description);
break;
case 1:
//pag pinindot si index 1, which is yung pangalawang item, which is Delete, ano mangyayari?
//Tawagin si method deleteItem()
deleteItem();
break;
}
}
});
adb.show();
}
private void deleteItem(){
//tawagin nating ang databaes method na deleteTask para madelete ang item gamit ang position_id
db.deleteTask(new Task(position_id));
//irefresh ang listview
populateList();
}
//Tatawagin naman to pag pinindot si edit. Index 0
private void editItem(String msg){
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Edit Task");
// gawa tayo ng edit text na ilalagay sa alert dialog. Magdeclare ng EditText
final EditText input = new EditText(this);
//ilagay na ang edittext sa alert dialog.
adb.setView(input);
//lagyan natin ng laman ang edittext pagka bukas ng dialog.
input.setText(msg);
adb.setPositiveButton("Update", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//laman ni variable value yung bagong value.
String value = input.getText().toString();
//tatawagin si database method na updateTask para ipasa sakanya ang iuupdate na ID tapos kung ano yung bagong value
db.updateTask(new Task(position_id, value));
//irefresh ang listview
populateList();
}
});
adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
adb.show();
}
@Override
public void onStart(){
super.onStart();
//Everytime na bubuksan natin si application, tatawagin natin
//si populateList() na naglalagay ng laman ng database sa listview.
populateList();
}
}
package com.example.mp1;
/*
* THE GETTERS AND SETTERS
*/
public class Task {
int id;
String desc;
public Task(){
}
public Task(int id, String desc){
this.id = id;
this.desc = desc;
}
public Task(String desc){
this.desc = desc;
}
public Task(int id){
this.id = id;
}
public int getID(){
return this.id;
}
public void setID(int id){
this.id = id;
}
public String getDesc(){
return this.desc;
}
public void setDesc(String desc){
this.desc = desc;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment