我遇到的问题是该项目已插入我的数据库两次。我没有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的功能。它实际上附加了已经有todo项目任务的行,但是我希望将它们添加到该行的日期和时间
我知道我在两种方法中都调用了update,但这是因为如果用户先点击任一按钮。
答案 0 :(得分:1)
而不是简单地获取Calendar实例,用日期/时间变量填充它,并使用DateFormat构建本地化的String。
单独试试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字符串here的信息。
答案 1 :(得分:0)
是的,您没有2个插入语句,但是您要两次调用 addItem()方法。
假设您需要从代码中更新日期和时间.. 当您更新时间时...您调用 update()方法,该方法调用将项目插入数据库的 addItem()方法。接下来,当您更新同一项目的日期时,再次调用更新() 它调用 addItem()方法,将该项再次插入数据库。
希望这是有帮助的