0

現在、削除ボタンをクリックすると画面に表示されている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;

    }
4

1 に答える 1

1

カーソルを更新する必要があります。あなたのコードについての私の最もよい推測は次のとおりです:

public void Deletedata (View view)
{
    int position = cursor.getPosition();

    int dRow;
    dRow = Integer.parseInt((cursor.getString(0)));
    db.deleteRecord(dRow);      
    Toast.makeText(this, "Contact Deleted", Toast.LENGTH_LONG).show();

    // Refresh the cursor
    cursor.close();
    cursor = db.getAllRecords();
    cursor.moveToPosition(position);

    Nextdata(view);             
}
于 2013-03-10T17:01:42.430 に答える