dimanche 1 février 2015

SQLite Database does't update listview item and inserts new instead

When item of listview is clicked, it gets opened in another activity which has edittext. After editing an item, when I save it, item does not get updated in the listview but it inserts a new entry in listview.


How can I update existing item without inserting new?


Here is my code


Activity: TRList.class



lv = (ListView)findViewById(R.id.tbr_list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Intent intent = new Intent(TRList.this, TRTimeReminder.class);
intent.putExtra("remId", (int)id);
startActivity(intent);
}
});


When listView item is clicked, it opens another activity


TRTimeReminder.class I have set save button in menu



case R.id.menu_tbr_done:
String title = edTitle.getText().toString();
String des = edDes.getText().toString();
String time = timeView.getText().toString();
String date = dateView.getText().toString();

Bundle extras = getIntent().getExtras();
if(extras != null) {
int value = extras.getInt("remId");
if (value > 0) {
trDb.updateReminder(new TRListFormat(value, title, des, date, time));
}
}
else{
trDb.addReminder(new TRListFormat(title, des, date, time));
}

Intent i = new Intent(getApplicationContext(), TRList.class);
startActivity(i);

edTitle.getText().clear();
edDes.getText().clear();
dateView.setText(currDate);
timeView.setText(currTime);

return true;


TRDBHelper.class



//Add new reminder
void addReminder(TRListFormat format){

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(COLUMN_TITLE, format.getTitle());
values.put(COLUMN_DES, format.getDes());
values.put(COLUMN_DATE, format.getDate());
values.put(COLUMN_TIME, format.getTime());

db.insert(TABLE_NAME, null, values);
db.close();
}

//Update single reminder
public void updateReminder(TRListFormat format){

SQLiteDatabase db = this.getWritableDatabase();

int id = format.getId();

ContentValues values = new ContentValues();
values.put(COLUMN_ID, format.getId());
values.put(COLUMN_TITLE, format.getTitle());
values.put(COLUMN_DES, format.getDes());
values.put(COLUMN_DATE, format.getDate());
values.put(COLUMN_TIME, format.getTime());

db.update(TABLE_NAME, values, COLUMN_ID+ " = " +id, null);
db.close();
}

Aucun commentaire:

Enregistrer un commentaire