この内容は、ViewSwitcher を使用した2画面アプリ (3) : 画面部分の作成と画面切り替えテスト『画面をコントロールする Helper クラスの作成』より続いています。表示するデータはなんでもいいのですが、他の環境に依存しないように、SQLIte3 の出来上がったデータを Android Studio にインポート(Push) して使用します。MainActivity もそのまま使わずに、MainControl というクラスを作成して MainActivity を継承し、メニュー部分の記述は見なくてもいいようにしています。 ※ AndroidManifest.xml の記述は、MainActivity を MainControl に変更すれば動作します データは、以下をダウンロードして、hanbai.sqlite3 を使用して下さい。 ※ 中のスクリプトに関しては、『Android Studio にインポートして使用する SQLite データベースを MDB より作成する VBScript』 を参照して下さい インポート前の準備 Android に、初期データベースを作成させて、それを上書きします。場所は data/data/パッケージ名/databases/hanbai.sqlite3 になります。 初期データベースを作成するには、SQLite 用の ヘルパークラスを作成して以下のように onStart と onStop に処理を書いて下さい。
public class MainControl extends MainActivity { // ******************************* // SQLite用 // ******************************* public MySQLite mySQLite; public SQLiteDatabase db; public ContentValues values; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // ******************************* // SQLite用 初期処理 // ******************************* @Override protected void onStart() { super.onStart(); Log.i("lightbox", "onStart"); // hanbai.sqlite3 というファイル名で SQLite を作成 mySQLite = new MySQLite(MainControl.this,"hanbai.sqlite3",1); // 更新用のデータベース・オブジェクトを取得 db = mySQLite.getWritableDatabase(); } // ******************************* // SQLite用 終了処理 // ******************************* @Override protected void onStop() { super.onStop(); Log.i("lightbox", "onStop"); // 終了処理 db.close(); mySQLite.close(); } }
SQLite ヘルパークラス( MySQLite )
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class MySQLite extends SQLiteOpenHelper { // ********************************* // コンストラクタ // ********************************* public MySQLite(Context context, String dbfile, int dbversion) { super(context, dbfile, null, dbversion); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
データのインポート 前述のコードをエミュレータで実行するだけです。実行したら、エミュレータの実行を停止して、Tools メニューの Android から、Android Device Monitor を起動して、data/data/パッケージ名/databases/hanbai.sqlite3 を選択し、右上の Push アイコンでインポートします。 今回は、syain を使用しますが、テーブルには以下のようなものがあります。 データの読み出しとリストビューへの表示 loadView というメソッドを作成して、onStart 内で呼び出しています。リストビューは、カスタマイズ無しの単純リストビューなので、リストの付加データーは ArrayList に保存して使用します。( Syain クラスを作成すればその必要はありません )
public class MainControl extends MainActivity { // ******************************* // SQLite用 // ******************************* public MySQLite mySQLite; public SQLiteDatabase db; public ContentValues values; // ******************************* // ListView用 // ******************************* public ListView listView; public ArrayAdapter<String> arrayAdapter; // 名前を格納 public ArrayList<String> arrayList; // コードを格納 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ListView listView = (ListView) MainControl.this.findViewById(R.id.listView); arrayAdapter = new ArrayAdapter<String>(MainControl.this,android.R.layout.simple_list_item_1); listView.setAdapter(arrayAdapter); arrayList = new ArrayList<String>(); } // ******************************* // リストビューの表示 // ******************************* public void loadView() { String sql = String.format("select * from %s order by scode desc", "syain"); Cursor cursor = mySQLite.getReadableDatabase().rawQuery(sql, null); Boolean isData = null; // 何度も呼び出されるので一覧を初期化 arrayList.clear(); arrayAdapter.clear(); // SQLite のレコードセットの読み込みループ while ( isData == null ? (isData = cursor.moveToFirst()) : (isData = cursor.moveToNext()) ) { // 社員コード String scode = cursor.getString(cursor.getColumnIndex("scode")); arrayList.add(scode); // 氏名 String sname = cursor.getString(cursor.getColumnIndex("sname")); arrayAdapter.add(sname); Log.i("lightbox", String.format("%s : %s",scode,sname)); } cursor.close(); } // ******************************* // SQLite用 初期処理 // ******************************* @Override protected void onStart() { super.onStart(); Log.i("lightbox", "onStart"); // hanbai.sqlite3 というファイル名で SQLite を作成 mySQLite = new MySQLite(MainControl.this,"hanbai.sqlite3",1); // 更新用のデータベース・オブジェクトを取得 db = mySQLite.getWritableDatabase(); // データを ListView に表示 loadView(); } // ******************************* // SQLite用 終了処理 // ******************************* @Override protected void onStop() { super.onStop(); Log.i("lightbox", "onStop"); // 終了処理 db.close(); mySQLite.close(); } }
|
【2017 Android Studioの最新記事】
- 別に納品するわけでは無いので、Android の ListView のカスタマイズなんてこれで十分でしょ / TestArrayAdapter バージョン2
- Java : Class 構造より、update 文を作成する
- ViewSwitcher を使用した2画面アプリ (5) : 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(通知)のテスト