SQLの窓

2017年09月23日


ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示する

この内容は、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の最新記事】
posted by lightbox at 2017-09-23 16:22 | 2017 Android Studio | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり