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


表示するデータはなんでもいいのですが、他の環境に依存しないように、SQLIte3 の出来上がったデータを Android Studio にインポート(Push) して使用します。MainActivity もそのまま使わずに、MainControl というクラスを作成して MainActivity を継承し、メニュー部分の記述は見なくてもいいようにしています。
※ AndroidManifest.xml の記述は、MainActivity を MainControl に変更すれば動作します
データは、以下をダウンロードして、hanbai.sqlite3 を使用して下さい。

初期データベースを作成するには、SQLite 用の ヘルパークラスを作成して以下のように onStart と onStop に処理を書いて下さい。
データの読み出しとリストビューへの表示
loadView というメソッドを作成して、onStart 内で呼び出しています。リストビューは、カスタマイズ無しの単純リストビューなので、リストの付加データーは ArrayList に保存して使用します。( Syain クラスを作成すればその必要はありません )




