1. Create App dengan nama Realm. Pakai default.
2. tambah librari di modul app
compile '[Link]:realm-android:0.87.2'
dan
file->project structure->app->dependeci +
-recyclerview
-cardview
-design
dari [Link]
3. Buat Class dengan nama BaseApp di Extends kan
private class BaseApp extends Application{
@Override
public void onCreate() {
[Link]();
RealmConfiguration configuration = new
RealmConfiguration.
Builder( this).schemaVersion( 0)
.migration( new DataMigration ())
.build();
Realm. setDefaultConfiguration (configuration );
}
}
[Link] Kelas DataMigration()didalam BaseApp
private class DataMigration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long
newVersion) {
RealmSchema schema = [Link]();
if(oldVersion == 0){
[Link]( "siswa")
.addField( "id", [Link])
.addField( "nama", String. class)
.addField( "alamat", String. class);
oldVersion++;
}
}
5. Buat Kelas Model Siswa
package [Link];
/**
* Created by Gilang Ramadhan on 14/01/2017.
*/
public class ModelSiswa {
int id;
String nama, alamat;
public ModelSis wa(int ids, String namas, String alamats){
[Link] = ids;
[Link] = namas;
[Link] = alamats;
}
public int g etId() {
return i d;
}
public void s etId(int id) {
[Link] = id;
}
public String g etNama() {
return nama;
}
public void setNama(String nama) {
[Link] = nama;
}
public String g etAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
[Link] = alamat;
}
}
6. Buat kelas siswa di extend kan ke RealmObject
package [Link];
import [Link] almObject;
/**
* Created by Gilang Ramadhan on 14/01/2017.
*/
public class Siswa extends RealmObject {
private int id;
private String nama, alamat;
public int g etId() {
return i d;
}
public void s etId(int id) {
[Link] = id;
}
public String g etNama() {
return nama;
}
public void setNama(String nama) {
[Link] = nama;
}
public String g etAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
[Link] = alamat;
}
}
7. Buat kelas untuk Helper(Pembantu Create Upadate Delete Read)
package [Link];
[Link] [Link];
import a
import a [Link] [Link];
import a [Link] [Link];
import [Link].A rrayList;
[Link] alm;
import i
import i [Link] almResults;
import i [Link] rt;
/**
* Created by Gilang Ramadhan on 14/01/2017.
*/
public class RealmHelper {
private static final String TAG = "RealmHelper";
private Realm realm;
private RealmResults<Siswa> realmResults;
public Context context;
public RealmHel per(Context ctx) {
realm = Realm. getInstance(ctx);
[Link] = ctx;
}
//create
public void addSiswa(String nama, String alamat) {
Siswa siswa = new Siswa();
[Link](( int) (System. currentTimeMillis() / 1000));
[Link](nama);
[Link](alamat);
[Link]();
[Link](siswa);
[Link]();
ShowLog( "data " + nama + " Berhasil disimpan");
}
public void deleteSiswa( int id) {
RealmResults<Siswa> dataResult = [Link](Siswa. class)
.equalTo( "id", id).findAll();
[Link]();
[Link]( 0);
[Link]();
[Link]();
[Link]();
ShowLog( "Data berhasil dihapus");
}
public void updateSiswa( int id, String nama, String alamat) {
[Link]();
Siswa siswa = [Link](Siswa. class)
.equalTo( "id", id).findFirst();
[Link](nama);
[Link](alamat);
[Link]();
ShowLog( "Data berhasil di update");
}
public ArrayLis t<ModelSiswa> findAllSiswa() {
ArrayList<ModelSiswa> data = new ArrayList<>();
realmResults = [Link](Siswa. class).findAll();
[Link]("id", [Link]);
if ([Link]() > 0) {
ShowLog( "Size : " + [Link]());
for (int i = 0; i < [Link](); i++) {
String nama, alamat;
int id = [Link](i).getId();
nama = [Link](i).getNama();
alamat = [Link](i).getAlamat();
[Link]( new ModelSiswa(id, nama, alamat));
}
} else {
ShowLog( "size = 0");
}
return data;
}
//import [Link];
private void ShowLog( String s) {
Log. d(TAG, s);
Toast. makeText(context, s, Toast. LENGTH_LONG).show();
}
}
[Link] Adapter untuk menampung Data
package [Link];
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
import [Link].A rrayList;
/**
* Created by Gilang Ramadhan on 14/01/2017.
*/
public class AdapterSiswa extends
RecyclerVie [Link]<[Link]> {
private final OnItemClickListener listener;
private ArrayList<ModelSiswa> siswas;
public interface OnItemClickListener {
void onClick(ModelSiswa item);
}
public AdapterS iswa(ArrayList<ModelSiswa> siswas,
OnItemClickListener listener) {
[Link] = siswas;
[Link] = listener;
}
@Override
public AdapterS [Link] onCreateViewHolder(ViewGroup
parent, int viewType) {
View view = LayoutInflater
. from([Link]())
.inflate([Link].list_item, null);
ViewHolder viewHolder = new
ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder([Link] holder, int
position) {
[Link]( [Link](position), listener);
[Link](String. valueOf([Link](pos ition).getId()));
[Link](String. valueOf([Link](position).getNama()))
;
[Link](String. valueOf([Link](position).getAlamat
()));
}
@Override
public int g etItemCount() {
return s [Link]();
}
public class V
iewHolder extends [Link] {
TextView i d, nama, alamat;
public ViewHolder(View itemView) {
super(itemView);
id = (TextView) [Link]([Link]);
nama = (TextView) [Link]([Link]);
alamat = (TextView)
[Link]([Link]);
ublic void click(final ModelSiswa model Siswa, final
p
OnItemClickListener listener) {
[Link]( new [Link]() {
@Override
public void onClick(View view) {
listener .onClick( modelSiswa );
}
});
}
}
9. Buat Layout nya list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="[Link]
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
< LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content"
android:padding="10dp">
< TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtid"
android:visibility="gone"/>
< TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="nama"
android:id="@+id/txtnama"
android:textSize="18sp"/>
< TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtalamat"
android:text="ALALAMAT"
android:textSize="18sp"/>
</ LinearLayout>
</[Link]>
</LinearLayout>
10. Tambahkan Recicle View di activity [Link]
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/RVSiswa">
</[Link]>
11. Tambahakan di [Link]
package [Link];
import [Link] [Link];
import [Link]. Bundle;
import [Link] [Link];
import [Link] [Link];
import [Link].A rrayList;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RealmHelper realmHelper;
private ArrayList<ModelSiswa> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link]. activity_main);
data = new ArrayList<>();
realmHelper = new RealmHelper(MainActivity. this);
recyclerView = (RecyclerView) findViewById([Link]. RVSiswa);
[Link]( new
LinearLayoutManager( this));
setRecycleView();
}
private void setRecycleView() {
try {
data = [Link]();
} catch (Exception e) {
[Link]();
}
AdapterSiswa adapterSiswa = new AdapterSiswa( data,
new [Link]() {
@Override
public void onClick(ModelSiswa item) {
// edit sama hapus ketika item diklik
}
});
[Link](adapterSiswa);
}
@Override
protected void onResume() {
[Link]();
try {
data = [Link]();
} catch (Exception e) {
[Link]();
}
setRecycleView();
}
}
12. Tambahkan 1 button
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add"
android:text="add"/>
13. Buat Activity baru AddActivity
dilayoutnya
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/nama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:hint="Nama" />
<EditText
android:id="@+id/alamat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Alamat" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:orientation="horizontal">
< Button
android:id="@+id/simpan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Simpan" />
</LinearLayout>
</LinearLayout>
14. Masuk Ke main Activity
Tambahkan kode berikut
Button add = (Button) findViewById([Link]. add);
[Link]( new [Link]() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(),
AddActivity. class);
startActivity(i);
}
});
15. Masuk di AddActivty
package [Link];
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
import [Link]. Bundle;
import [Link] [Link];
import [Link] [Link];
import [Link] [Link];
public class AddActivity extends AppCompatActivity {
private RealmHelper helper;
private EditText inAlamat, inNama;
private Button addButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link]. activity_add);
helper = new RealmHelper(AddActivity. this);
inNama = (EditText) findViewById([Link]. nama);
inAlamat = (EditText) findViewById([Link]. alamat);
addButton = (Button) findViewById([Link]. simpan);
[Link]( new [Link]() {
@Override
public void onClick(View view) {
String nama, alamat;
nama = [Link]().toString ();
alamat = [Link]().toString();
[Link](nama, alamat);
startActivity( new
Intent(getApplicationContext(),MainActivity. class));
finish();
}
});
}
}
Kode lengkap
[Link]