티스토리 뷰



realm의 기능을 간단하게 사용해보자



1. 환경설정


build.gradle(project) 파일에서 위와같이 

classpath "io.realm:realm-gradle-plugin:3.5.0"

를 선언해줍니다.


그리고 build.gradle(app)파일에서

apply plugin: 'realm-android'

를 선언해줍니다.


2. 사용할 클래스를 RealmObject를 상속 받게합니다.

public class Protocol extends RealmObject {

public String name;
public String hexCode;

@Override
public String toString() {
return "Protocol{" +
"hexCode='" + hexCode + '\'' +
", name='" + name + '\'' +
"} " + super.toString();
}
}


3. 액티비티 내에서 추가, 조회, 삭제 방법

public class MainActivity extends AppCompatActivity {
private String TAG = "MainActivity";

private Realm realm;
private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

// 사용전 Realm초기화
Realm.init(this);
setupRealm();
setupEvent();
}

private void setupEvent() {
// 단순한 추가
binding.addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
realm.beginTransaction();
Protocol protocol = realm.createObject(Protocol.class);
protocol.name = "test";
protocol.hexCode = "111111";
realm.commitTransaction();
}
});

// 추가된 값들을 조회
binding.getData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RealmResults<Protocol> protocols = realm.where(Protocol.class).findAll();
for (int i = 0; i < protocols.size(); i++) {
Protocol protocol = protocols.get(i);
Log.d(TAG, "protocol : " + protocol);
}
}
});

// 오브젝트를 삭제해봅시당
binding.deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 특정 값에 대한 객체를 가져온다
RealmResults<Protocol> protocols = realm.where(Protocol.class).equalTo("hexCode", "111111").findAll();

// 사용하기전에 아래의 메소드를 호출해야한다
realm.beginTransaction();
protocols.deleteAllFromRealm();
// 커밋
realm.commitTransaction();
}
});
}

private void setupRealm() {
realm = Realm.getDefaultInstance();
// 변경된 사항들에 대한 감시
realm.addChangeListener(new RealmChangeListener<Realm>() {
@Override
public void onChange(Realm realm) {
Log.e(TAG, "onChange");

RealmResults<Protocol> protocols = realm.where(Protocol.class).findAll();
for (int i = 0; i < protocols.size(); i++) {
Protocol protocol = protocols.get(i);
Log.d(TAG, "protocol : " + protocol);
}
}
});
}
}


4. 샘플

 - https://github.com/karrel84/RealmSample

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크