読者です 読者をやめる 読者になる 読者になる

さまよえる、Android

Androidのプログラミングで便利なことや残しておきたいことを残しておく。もしオススメのライブラリがあったら教えてくださいね。

直感的でシンプルにsqliteを操作できる、Androidのライブラリ、ActiveAndroidを試す。

github.com

Androidからsqliteを操作するとき、標準のライブラリは直感的でなく、呪文のようなコードを毎回書くのがつらいので、sqliteのライブラリを探してたところ、ActiveAndroidが良さそうだったので、調べてみた。これ以外にもORMLite、greenDaoが有名みたい。

理想

 Item item = new Item();
 item.name = "うまい棒";
 item.price = 30;
 item.save();

いつもの

repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'

まずはデータベース名を、AndroidManifest.xmlに定義する。

[ 変更前 ] AndroidManifest.xml

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

[ 変更後 ] AndroidManifest.xml

    <application
        android:name="com.activeandroid.app.Application"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data android:name="AA_DB_NAME" android:value="sample.db" />
        <meta-data android:name="AA_DB_VERSION" android:value="1" />

テーブルを作ろう

Itemsテーブル
・name
・price

Item.java

import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;

@Table(name = "Items")
public class Item extends Model {
    @Column(name = "Name")
    public String name;

    @Column(name = "Price")
    public int price;
}

MainActivity.java

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // itemsにレコードを登録
        Item item = new Item();
        item.name = "うまい棒";
        item.price = 30;
        item.save();
        List<Item> items = new Select().from(Item.class).execute();

        for (Item record : items) {
            Toast.makeText(MainActivity.this, record.name + ":" + record.price, Toast.LENGTH_SHORT).show();
        }
    }

なんか動かない、テーブルがないので怒られる場合は、アプリを一度削除したら動くかも。しかし標準のライブラリと比べたらコードの量も減り、直感的でわかりやすくなった。

テストを見るとわかりやすい。
ActiveAndroid/tests/src/com/activeandroid/test/query at master · pardom/ActiveAndroid · GitHub