N
newperson
Neues Mitglied
- 1
Hallo ich habe eine Frage bei Sqlite Update. Leider weiß ich einfach nicht was ich falsch gemacht habe, daher bitte ich um Hilfe 
Meine App besteht aus der MainActivity mit einer ListView die die aktuellen Daten anzeigt.
Mit einem Button Add kann man auf der DetailsActivity die Namen hinzufügen.
Wenn ich auf der ListView ein Name anklicke (OnItemClick) komm ich auf die EditActivit, auf der ich dann das eine Item updaten kann. Leider wenn ich diesen einen Namen updaten möchte funktioniert es nicht.
Konkret: wenn ich auf update klicke geschieht überhaupt nichts, es kommt auch keine Fehlermeldung?!
Derzeit kann ich nur Namen hinzufügen, leider nicht updaten.
Danke für EURE HILFE
)
Hier der Code:
MainActivity
EditActivity
DbAdapter
Meine App besteht aus der MainActivity mit einer ListView die die aktuellen Daten anzeigt.
Mit einem Button Add kann man auf der DetailsActivity die Namen hinzufügen.
Wenn ich auf der ListView ein Name anklicke (OnItemClick) komm ich auf die EditActivit, auf der ich dann das eine Item updaten kann. Leider wenn ich diesen einen Namen updaten möchte funktioniert es nicht.
Konkret: wenn ich auf update klicke geschieht überhaupt nichts, es kommt auch keine Fehlermeldung?!
Derzeit kann ich nur Namen hinzufügen, leider nicht updaten.
Danke für EURE HILFE
Hier der Code:
MainActivity
Code:
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg0, View view, int position,
long id) {
// TODO Auto-generated method stub
Bundle passdata = new Bundle();
Cursor listCursor = (Cursor) arg0.getItemAtPosition(position);
int nameId = listCursor.getInt(listCursor
.getColumnIndex(myDbHelper.KEY_ROWID));
// Toast.makeText(getApplicationContext(),
// Integer.toString(nameId), 500).show();
passdata.putInt("keyid", nameId);
Intent passIntent = new Intent(MainActivity.this,
EditActivity.class);
passIntent.putExtras(passdata);
startActivity(passIntent);
}
});
}
EditActivity
Code:
public class EditActivity extends AppCompatActivity implements View.OnClickListener{
DBAdapter myAdapter;
DbHelper myDbHelper;
EditText edtName_modify;
Button btnUpdate;
int rowId;
Cursor c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
openDB();
edtName_modify = (EditText) findViewById(R.id.edtName_modify);
btnUpdate = (Button) findViewById(R.id.btnUpdate);
btnUpdate.setOnClickListener(this);
Bundle showData = getIntent().getExtras();
rowId = showData.getInt("keyId");
myAdapter = new DBAdapter(this);
c = myAdapter.queryAll(rowId);
if (c.moveToFirst()){
do{
edtName_modify.setText(c.getString(1));
}while (c.moveToNext());
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnUpdate:
myAdapter.updateRow(rowId, edtName_modify.getText().toString());
finish();
break;
}
}
private void openDB() {
myAdapter = new DBAdapter(this);
myAdapter.open();
}
private void closeDB() {
myAdapter.close();
}
@Override
protected void onDestroy() {
super.onDestroy();
closeDB();
}
}
DbAdapter
Code:
public long updateRow(long rowId, String task) {
String where = DbHelper.KEY_ROWID + "=" + rowId;
ContentValues newValues = new ContentValues();
newValues.put(DbHelper.KEY_TASK, task);
SQLiteDatabase db = myDBHelper.getWritableDatabase();
long val = db.update(DbHelper.DATABASE_TABLE, newValues, where, null);
close();
return val;
}
public Cursor queryAll(int nameId) {
String[] cols = {myDBHelper.KEY_ROWID, myDBHelper.KEY_TASK};
SQLiteDatabase db = myDBHelper.getWritableDatabase();
Cursor c = db.query(myDBHelper.DATABASE_TABLE,cols,myDBHelper.KEY_ROWID + "=" + nameId, null,null,null,null);
return c;
}