この内容は、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(通知)のテスト