删除复选框中的勾选任务

时间:2014-01-07 14:45:46

标签: java android checkbox

我正在开发一个应用程序,一个带有复选框的任务查看器。我可以添加任务但不删除。我怎么能删除它们?如果在我按删除时检查它们就会被删除。

TaskerDbHelper

public class TaskerDbHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "taskerManager";

// tasks table name
private static final String TABLE_TASKS = "tasks";

// tasks Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_TASKNAME = "taskName";
private static final String KEY_STATUS = "status";

public TaskerDbHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {

    String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_TASKS + " ( "
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_TASKNAME
            + " TEXT, " + KEY_STATUS + " INTEGER)";
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_TASKS);
    // Create tables again
    onCreate(db);
}

// Adding new task
public void addTask(Task task) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_TASKNAME, task.getTaskName()); // task name
    // status of task- can be 0 for not done and 1 for done
    values.put(KEY_STATUS, task.getStatus());

    // Inserting Row
    db.insert(TABLE_TASKS, null, values);
    db.close(); // Closing database connection
}

public List<Task> getAllTasks() {
    List<Task> taskList = new ArrayList<Task>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_TASKS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Task task = new Task();
            task.setId(cursor.getInt(0));
            task.setTaskName(cursor.getString(1));
            task.setStatus(cursor.getInt(2));
            // Adding contact to list
            taskList.add(task);
        } while (cursor.moveToNext());
    }

    // return task list
    return taskList;
}

public void updateTask(Task task) {
    // updating row
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_TASKNAME, task.getTaskName());
    values.put(KEY_STATUS, task.getStatus());
    db.update(TABLE_TASKS, values, KEY_ID + " = ?",new String[] {String.valueOf(task.getId())});
    db.close();
}

ViewTask

public class ViewTask extends Activity {
protected TaskerDbHelper db;
List<Task> list;
MyAdapter adapt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_task);
    db = new TaskerDbHelper(this);
    list = db.getAllTasks();
    adapt = new MyAdapter(this, R.layout.list_inner_view, list);
    ListView listTask = (ListView) findViewById(R.id.listView1);
    listTask.setAdapter(adapt);
}

public void addTaskNow(View v) {
    EditText t = (EditText) findViewById(R.id.editText1);
    String s = t.getText().toString();
    if (s.equalsIgnoreCase("")) {
        Toast.makeText(this, "enter the task description first!!",
                Toast.LENGTH_LONG);
    } else {
        Task task = new Task(s, 0);
        db.addTask(task);
        Log.d("tasker", "data added");
        t.setText("");
        adapt.add(task);
        adapt.notifyDataSetChanged();
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_view_task, menu);
    return true;
}

private class MyAdapter extends ArrayAdapter<Task> {

    Context context;
    List<Task> taskList = new ArrayList<Task>();
    int layoutResourceId;

    public MyAdapter(Context context, int layoutResourceId,
            List<Task> objects) {
        super(context, layoutResourceId, objects);
        this.layoutResourceId = layoutResourceId;
        this.taskList = objects;
        this.context = context;
    }

    /**
     * This method will DEFINe what the view inside the list view will
     * finally look like Here we are going to code that the checkbox state
     * is the status of task and check box text is the task name
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        CheckBox chk = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_inner_view,
                    parent, false);
            chk = (CheckBox) convertView.findViewById(R.id.chkStatus);
            convertView.setTag(chk);

            chk.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    CheckBox cb = (CheckBox) v;
                    Task changeTask = (Task) cb.getTag();
                    changeTask.setStatus(cb.isChecked() == true ? 1 : 0);
                    db.updateTask(changeTask);
                    Toast.makeText(
                            getApplicationContext(),
                            "Clicked on Checkbox: " + cb.getText() + " is "
                                    + cb.isChecked(), Toast.LENGTH_LONG)
                            .show();
                }

            });
        } else {
            chk = (CheckBox) convertView.getTag();
        }
        Task current = taskList.get(position);
        chk.setText(current.getTaskName());
        chk.setChecked(current.getStatus() == 1 ? true : false);
        chk.setTag(current);
        Log.d("listener", String.valueOf(current.getId()));
        return convertView;
    }

}

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewTask"
android:background="@drawable/fondo">

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:ems="10"
    android:layout_alignBottom="@+id/button1"
    android:layout_toLeftOf="@+id/button1">

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Afegir"
    android:onClick="addTaskNow"
    android:textSize="30dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button1"
    android:layout_toLeftOf="@+id/button1">
</ListView>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Delete"
    android:id="@+id/deleteButton"
    android:textSize="22dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="22dp" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

要删除,您可以致电:

SQLiteDatabase sqldb =  db.openDatabase(DB_NAME);
sqldb.delete(TABLE_NAME, ID_COLUMN +"="+ object.getID(), null);