以前、書いたこちらの記事(キラッとプリ☆チャンのコーデ管理アプリを作ってみた話)から更新しました。
更新した部分
リストの読み込み部分をSQLiteのデータベースにマルナゲ!
前のは、いちいちソースに書いてたので、これをSQLiteで作成しておいたデータベースを取得して、アプリのリストビューで見れるように。
private class ListShowClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
// データベースヘルパーオブジェクトを作成
DatabaseHelper helper = new DatabaseHelper(PrichanJewel1.this);
// データベース接続オブジェクトを作成
try (SQLiteDatabase db = helper.getWritableDatabase()) {
String sql = "select * from prij1corde order by _id";
Cursor cursor = db.rawQuery(sql, null);
String[] column = {"card_name", "card_own"};
int[] cardList = {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter adapter = new SimpleCursorAdapter
(PrichanJewel1.this, android.R.layout.simple_expandable_list_item_2,
cursor, column, cardList, 0);
lvJprichan.setAdapter(adapter);
}
}
}
これで、SQLiteに既に作られたデータベースにアクセスして、リストを取得して、リストビューに表示することができるようになりました。
更新の場合も同じような感じで出来ました。
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
// 長押しされた位置を取得
Cursor item = (Cursor)lvJprichan.getItemAtPosition(position);
// 取得した位置にあるリスト名を取得(ここではカード名を取得する)
String card_name = item.getString(item.getColumnIndex("card_name"));
// データベースヘルパーオブジェクトを作成
DatabaseHelper helper = new DatabaseHelper(PrichanJewel1.this);
// データベース接続オブジェクトを作成
try (SQLiteDatabase db = helper.getWritableDatabase()) {
String upSql = "update prij1corde set card_own = '所持済' where card_name = '" + card_name + "'";
SQLiteStatement stmt = db.compileStatement(upSql);
stmt.executeUpdateDelete();
}
Toast.makeText(PrichanJewel1.this,
"登録完了!",Toast.LENGTH_SHORT).show();
return true;
}
なお、データベースヘルパーは
男子大学生の考えること:自前のSQLiteDatabaseファイルをassetsからandroidで使えるようにする
で、紹介されているソースコードほぼそのまま使っています。
リスト取得はこちらの記事が参考になりました。
sqliteで取得した値をListViewに表示する簡単な例
##どうしてそう出来たの?
なかなかいいアイデアが閃かず、半ばヤケクソでJavaとPostgreSQLで同じような仕組みのを作ったことで、ひらめいたわけです。
「データベース組み込んだらできるんじゃね?」
と。
やったことが全く無かったので、色々調べて半信半疑でやってみたら、うまく行ってしまったのでこういうことになったわけです。
以上です。