1

我遇到了一个问题,即该项目被两次插入到我的数据库中。我没有 2 个插入语句。

我正在尝试检查数组的元素是否为空。

这是我的代码片段

在我的主要活动中

private String[] dateTimeDispStr= new String[2];

在 onCreate 中:

dateTimeDispStr[0]=null;
dateTimeDispStr[1]=null;

同一活动的其他部分:

//-------------------------------------------update time----------------------------------------//    
public void updatetime()
{
    dateTimeDispStr[0]=new StringBuilder()
    .append(pad(mhour)).append(":")
    .append(pad(mminute)).toString();

    tdv.editRow(this, dateTimeDispStr);
    if(dateTimeDispStr[1]!=null){
        update();
    }

}

//-------------------------------------------update date----------------------------------------//    
private void updateDate() {
    dateTimeDispStr[1]=new StringBuilder()
    // Month is 0 based so add 1
    .append(mMonth + 1).append("/")
    .append(mDay).append("/")
    .append(mYear).append(" ").toString();

    tdv.editRow(this, dateTimeDispStr);
    if(dateTimeDispStr[0]!=null){
        update();
    }

}


SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:MM");

public void update(){
    Calendar cal = Calendar.getInstance();
    cal.set(mYear, mMonth + 1, mDay, mhour, mminute, 0);
    String date = formatter.format(cal.getTime());

    tdi.setDate(date.split(" ")); // split makes an array of ["date", "time"]
    db.addItem(tdi);
    Log.d("Item set in the db", "The item: " + date);
}

这是我的数据库处理程序

// Adding new ToDoItem
public void addItem(ToDoItem item) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_TASK, item.getTDItem()); // item task
        values.put(KEY_DATE, item.getDate()); // item date
        values.put(KEY_PRIORITY, item.getPriority()); // item priority

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

tdv.editRow 编辑我的 UI 上扩展表格布局的行。我将在几秒钟内添加检查 null 的功能。它本质上附加了已经具有待办事项任务的行,但是我想将日期和时间添加到该行

我知道我在这两种方法中都调用了更新,但那是因为如果用户首先单击任一按钮。

4

2 回答 2

1

而不是所有这些,我会简单地获取一个日历实例,用您的日期/时间变量填充它,并使用 DateFormat 来构建一个本地化的字符串。

自己试试这个update()

// Create a field variable
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm"); // HH for 24hr

public void update(){
    Calendar cal = Calendar.getInstance();
    cal.set(mYear, mMonth + 1, mDay, mhour, mminute, 0);
    String date = formatter.format(cal.getTime());

    tdi.setDate(date.split(" ")); // split makes an array of ["date", "time"]
    db.addItem(tdi);
    Log.d("Item set in the db", "The item: " + date);
}

(我目前没有可用的编译器,所以请原谅任何小缺陷......)
阅读有关自定义 SimpleDateFormat 字符串的信息

于 2013-01-13T21:50:55.937 回答
0

是的,您没有 2 个插入语句,但您调用了addItem()方法两次。

假设您需要在更新时间时从代码中更新日期和时间。您调用update()方法,该方法调用将项目插入数据库的addItem()方法。接下来,当您更新同一项目的日期时,您再次调用update() ,该方法调用addItem()方法将项目再次插入数据库。

希望这有帮助

于 2013-01-13T21:50:11.607 回答