この内容は、ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示するより続いています。更新部分に特化したコードにする為に、MainControl をさらに継承して、マニフェストの初期画面を新しいクラス( MainUpdate ) に変更します。 特別な部分は特に無く、更新ボタンをクリックすると更新するだけです。但し、新規と修正の二通りがあるので、textViewCode の表示状態を取得して、どちらを実行するか決定しています。
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
public class MainUpdate extends MainControl {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("lightbox","タップされました");
String scode = arrayList.get(position);
helper.getTextView(R.id.textViewCode).setText(scode);
// キーを渡して SQLite にアクセスする
loadData(scode);
// 画面を切り替える
helper.showEditView();
}
});
// 更新ボタンの処理
MainUpdate.this.findViewById(R.id.buttonUpdate).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("lightbox","更新ボタンがクリックされました");
//alertDialog.show();
helper.showDialog("更新してよろしいですか?", new Helper.OnDialogOkListener() {
@Override
public void onDialogOkListener() {
Log.i("lightbox","ダイアログで、OK ボタンがクリックされました");
if ( helper.getTextView(R.id.textViewCode).getVisibility() == View.VISIBLE ) {
updateData();
}
else {
insertData();
}
}
});
}
});
}
// *******************************
// データの更新
// *******************************
private void updateData() {
Log.i("lightbox","updateData");
String scode = helper.getTextViewString(R.id.textViewCode);
String sname = helper.getEditTextString(R.id.editText1);
String furi = helper.getEditTextString(R.id.editText2);
values.clear();
values.put("sname", sname);
values.put("furi", furi);
db.update("syain", values, String.format("scode='%s'", scode), null);
loadView();
helper.showFirstView();
}
// *******************************
// データの登録
// *******************************
private void insertData() {
Log.i("lightbox","insertData");
String scode = helper.getTextViewString(R.id.editTextCode);
String sname = helper.getTextViewString(R.id.editText1);
String furi = helper.getTextViewString(R.id.editText2);
values.clear();
values.put("scode", scode);
values.put("sname", sname);
values.put("furi", furi);
db.insert("syain", null, values);
loadView();
helper.showFirstView();
}
// *******************************
// 編集用データの表示
// *******************************
private void loadData(String scode) {
String sql = String.format("select * from %s where scode='%s' ", "syain", scode);
Cursor cursor = mySQLite.getReadableDatabase().rawQuery(sql, null);
Boolean isData = null;
isData = cursor.moveToFirst();
String sname = cursor.getString(cursor.getColumnIndex("sname"));
helper.setEditTextString(R.id.editText1,sname);
String furi = cursor.getString(cursor.getColumnIndex("furi"));
helper.setEditTextString(R.id.editText2,furi);
cursor.close();
}
}
|
|
【2017 Android Studioの最新記事】
- 別に納品するわけでは無いので、Android の ListView のカスタマイズなんてこれで十分でしょ / TestArrayAdapter バージョン2
- Java : Class 構造より、update 文を作成する
- ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示する
- Android Studio にインポートして使用する SQLite データベースを MDB より作成する VBScript
- ViewSwitcher を使用した2画面アプリ (3) : 画面部分の作成と画面切り替えテスト『画面をコントロールする Helper クラスの作成』
- ViewSwitcher を使用した2画面アプリ (2) : 画面部分の作成と画面切り替えテスト『画面の作成』
- ViewSwitcher を使用した2画面アプリ (1) : 画面部分の作成と画面切り替えテスト『メニューの作成』
- OkHttp を使用した HttpAccess クラスで Web 上の 画像をダウンロードして表示するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の PHP アプリに対してファイルをアップロードするテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の掲示板に投稿(POST)するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上のデータを取得(GET)して ListView を表示するテンプレート
- Okhttp を使用した、GET、POST、ファイルアップロードを楽に実装できる HttpAccess クラス
- Android の assets フォルダーに保存した 400x320 の画像ファイルの扱い
- Android の drawable フォルダーに保存した 400x320 の画像ファイルの6種類の扱いと Density
- Android での保存用テキストデータの扱いを okio で簡素化する
- Android 6.0 : テストの為の Runtime Permission の対応を自動化するテンプレート
- Android Studio : Runtime Permission 等の裏方作業を MainActivity にさせて、本来の処理は継承したサブクラスで行う( カメラを呼び出して画像を保存させ、I..
- Android 6.0 エミュレータで 複数の Runtime Permission の対応を簡潔に吸収するクラス( CheckMyPermission )
- Android 6.0 の Runtime Permission に対応する前に、AndroidManifest.xml に権限の記述の必要無いプライベートな書き込みで情報を収集する
- Android Studio : エミュレータで Notification(通知)のテスト






