私の質問は、このようなメソッドを呼び出す方法です。私はすでにそれを実装する方法を知っています。メソッドの内容は次のとおりです。
public boolean updateDebt(long updateId, String debtName, String debtTotal,
String debtApr, String paymentGoal) {
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_DEBT_NAME, debtName);
values.put(MySQLiteHelper.COLUMN_DEBT_TOTAL, debtTotal);
values.put(MySQLiteHelper.COLUMN_APR, debtApr);
values.put(MySQLiteHelper.COLUMN_PAYMENT, paymentGoal);
String whereClause = MySQLiteHelper.COLUMN_ID + " = ?";
String[] whereArgs = new String[]{ String.valueOf(updateId) };
return database.update(MySQLiteHelper.TABLE_DEBT, values, whereClause, whereArgs) > 0;
私の質問は、この updateDebt メソッドの呼び出しにあります。
更新ボタンのある 4 つのフィールドを持つダイアログを想像してください。フィールドにはテーブル データが事前に入力されています。ユーザーがフィールド データを変更し、更新をクリックすると、テーブルが変更されます。
これは、呼び出しの前に来るコードです。onListItemClick内のダイアログ内でonClickを介して呼び出していることに注意してください。
(関係のないものを編集して削除しました)
List<Debt> values;
MyArrayAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.debts);
datasource = new DebtDataSource(this);
datasource.open();
values = datasource.getAllDebt();
adapter = new MyArrayAdapter(this, values);
setListAdapter(adapter);
}
protected void onListItemClick(ListView l, View v, final int position, long id) {
Debt item = values.get(position);
final long boxId = item.getId();
final String BoxName = item.getName();
final String BoxBalance = item.getBalance();
final String BoxApr = item.getApr();
final String BoxPayment = item.getPayment();
// (edited out: setting up EditText fields here with data from above)
// set up button
Button button = (Button) dialog.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
datasource.updateDebt(Long.valueOf(boxId), BoxName, BoxBalance,
BoxApr, BoxPayment);
values = datasource.getAllDebt();
adapter.notifyDataSetChanged();
dialog.dismiss();
}
});
dialog.show();
}
簡単に言えば、更新を押しても何も起こりません。ダイアログが閉じます。logcatには何もありません。updateDebt() メソッド内の update メソッドの直前に変数をログアウトしました。私はそれらを乾杯しましたが、すべての変数が完全に一致しています。ただし、データベースは変更されません。何日もこれに苦労しています....