1.build.gradle(Project:xxxx)加入classpath "io.realm:realm-gradle-plugin:2.2.1"
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath "io.realm:realm-gradle-plugin:2.2.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2.build.gradle(Module:app)加入apply plugin: 'realm-android'
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.terryyamg.realmtest"
minSdkVersion 19
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
testCompile 'junit:junit:4.12'
}
3.AndroidManifest.xml的application內加入android:name=".MyApplication"
4.MyApplication.java
package com.terryyamg.realmtest;
import android.app.Application;
import io.realm.Realm;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Initialize Realm. Should only be done once when the application starts.
Realm.init(this);
}
}
5.MainActivity.java
package com.terryyamg.realmtest;
import android.app.Dialog;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import io.realm.Realm;
import io.realm.RealmResults;
public class MainActivity extends AppCompatActivity {
private Realm realm;
TextView tvMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
realm = Realm.getDefaultInstance();
tvMessage = (TextView) findViewById(R.id.tvMessage);
//Create
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
create();
}
});
//Update
FloatingActionButton fabUpdate = (FloatingActionButton) findViewById(R.id.fabUpdate);
fabUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
update();
}
});
//Delete
FloatingActionButton fabDelete = (FloatingActionButton) findViewById(R.id.fabDelete);
fabDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
delete();
}
});
read();
}
private void create() {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.table_dialog);
final EditText etName = (EditText) dialog.findViewById(R.id.etName);
final EditText etAge = (EditText) dialog.findViewById(R.id.etAge);
Button btnSave = (Button) dialog.findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
int personCount;
//PrimaryKey增加
try {
personCount = realm.where(Person.class).max("id").intValue() + 1;
} catch (Exception e) {
personCount = 1; //從1開始
}
Log.i("personCount", personCount + "");
// 人 Table
Person personC = realm.createObject(Person.class, personCount);
personC.setName(etName.getText().toString()); // 輸入姓名
personC.setAge(Integer.parseInt(etAge.getText().toString())); //輸入年齡
/* 公司 Table 測試 */
// Company company1 = realm.createObject(Company.class);
// company1.setId(4);
// company1.setCompanyName("公司2");
// personC.getCompany().add(company1);
//
// Company company2 = realm.createObject(Company.class);
// company2.setId(5);
// company2.setCompanyName("公司3");
// personC.getCompany().add(company2);
//
// Company company3 = realm.createObject(Company.class);
// company3.setId(6);
// company3.setCompanyName("公司4");
// personC.getCompany().add(company3);
read();
dialog.dismiss();
}
});
}
});
dialog.show();
}
private void read() {
/* 公司 Table 測試 */
// RealmResults<Person> person = realm.where(Person.class).equalTo("company.companyName", "公司2").equalTo("company.companyName", "公司1").findAll();
RealmResults<Person> person = realm.where(Person.class).findAll();
String message = "";
Log.i("person.size()",person.size()+"");
for (int i = 0; i < person.size(); i++) {
message += person.get(i).getName() + " - " + person.get(i).getAge() + "\n";
/* 公司 Table 測試 */
// Log.i("getCompany.size()",person.get(i).getCompany().size()+"");
// for(int j = 0; j <person.get(i).getCompany().size();j++) {
// message += person.get(i).getName() + " - " + person.get(i).getAge() + ":" + person.get(i).getCompany().get(j).getCompanyName() + "\n";
// }
}
tvMessage.setText(message);
}
private void update() {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.table_dialog);
final EditText etName = (EditText) dialog.findViewById(R.id.etName);
final EditText etAge = (EditText) dialog.findViewById(R.id.etAge);
Button btnSave = (Button) dialog.findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
//修改第一筆
Person person = realm.where(Person.class).equalTo("id", 1).findFirst();
person.setName(etName.getText().toString());
person.setAge(Integer.parseInt(etAge.getText().toString()));
read();
dialog.dismiss();
}
});
}
});
dialog.show();
}
private void delete() {
final RealmResults<Person> results = realm.where(Person.class).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
//刪除某一筆
// Person p = results.get(1);
// p.deleteFromRealm();
//刪除第一筆
// results.deleteFirstFromRealm();
//刪除最後一筆
// results.deleteLastFromRealm();
//刪除全部
results.deleteAllFromRealm();
}
});
read();
}
}
6.Person.java
package com.terryyamg.realmtest;
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
public class Person extends RealmObject{
@PrimaryKey
private int id;
private String name;
private int age;
private RealmList<Company> company;
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setCompany(RealmList<Company> company){
this.company = company;
}
public RealmList<Company> getCompany(){
return company;
}
}
7.Company.java
package com.terryyamg.realmtest;
import io.realm.RealmObject;
public class Company extends RealmObject{
private int id;
private String companyName;
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setCompanyName(String companyName){
this.companyName = companyName;
}
public String getCompanyName(){
return companyName;
}
}
8./res/layout/activity_main.xml
9./res/layout/content_main.xml
10./res/layout/table_dialog.xml
參考資料:
https://realm.io/docs/java/latest/#getting-started
檔案下載:
https://github.com/terryyamg/RealmTest

沒有留言 :
張貼留言