現在、削除ボタンをクリックすると画面に表示されているSQLiteデータベースのエントリを削除する電話帳アプリを作成しようとしています。ただし、削除ボタンをクリックすると、メソッドは実行されますが、使用しているエミュレーターを再起動するまで、データはSQLデータベーステーブルに残ります。再起動すると、データテーブルは自動的に更新され、[次へ]ボタンと[前へ]ボタンは以前に削除されたデータを取得しません。
なぜこれなのか誰か知っていますか?関連するコードをいくつか入れます。
public void Deletedata (View view)
{
int dRow;
dRow = Integer.parseInt((cursor.getString(0)));
db.deleteRecord(dRow);
Toast.makeText(this, "Contact Deleted", Toast.LENGTH_LONG).show();
Nextdata(view);
}
public void DisplayRecord(Cursor c)
{
EditText nameTxt = (EditText)findViewById(R.id.Name);
EditText phoneTxt = (EditText)findViewById(R.id.Phone);
EditText emailTxt = (EditText)findViewById(R.id.Email);
if (c!= null)
{
nameTxt.setText(c.getString(1));
phoneTxt.setText(c.getString(2));
emailTxt.setText(c.getString(3));
}
}
public void Nextdata (View view)
{
if (cursor.moveToNext())
{
DisplayRecord(cursor);
}
else
{
Toast.makeText(this, "Last Entry in Phone Book", Toast.LENGTH_LONG).show();
Previousdata(view);
}
}
public void Previousdata (View view)
{
if (cursor.moveToPrevious())
{
DisplayRecord(cursor);
}
else
{
Toast.makeText(this, "First Entry in Phone Book", Toast.LENGTH_LONG).show();
Nextdata(view);
}
このコードは私のDBAdaptorクラスにあります。
public boolean deleteRecord(long rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
public Cursor getAllRecords()
{
Cursor gaRecords = db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,
KEY_PHONENUMBER, KEY_EMAIL}, null, null, null, null, null);
gaRecords.moveToFirst();
return gaRecords;
}