Menampilkan Data Menggunakan RecyclerView (Realm) Part 1
- Get link
- X
- Other Apps
Hello Sobat, Hari ini saya akan memberikan artikel menengenai Realm. Apa itu Realm..?, Realm adalah merupakan suatu database sebagai pengganti SQLite yang digunakan di beberapa bahasa pemrogramana salah satunya java, kelebihan dari realm lebih mudah digunakan dan lebih cepat diakses dibanding SQLite dan Core Data. Baik untuk langkah-langkah sebagai berikut.
Gradle
Menambahkan library realm di gradle
compile 'io.realm:realm-android:0.87.2' compile 'com.android.support:design:25.3.1' compile 'com.android.support:cardview-v7:25.3.1' |
Design Layout
Membuat design layout dengan struktur
Buat nama sesuai dengan struktur diatas dan masukan code xml
- item_siswa.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="5dp"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary"> <View android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:orientation="vertical" android:padding="10dp"> <TextView android:id="@+id/tvId" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" /> <TextView android:id="@+id/tvNis" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="18sp" /> <TextView android:id="@+id/tvNama" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" /> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout> |
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#eeeeee" android:fitsSystemWindows="true" tools:context=".activity.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/activity_horizontal_margin" android:src="@drawable/ic_add_white_24dp" /> </android.support.design.widget.CoordinatorLayout> |
- content_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".activity.MainActivity" tools:showIn="@layout/activity_main"> <android.support.v7.widget.RecyclerView android:id="@+id/rvSiswa" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout> |
Package Java
Membuat package java dengan struktur, dalam pembuatan sesuaikan dengan nama package dan class supaya tidak terjadi error.
- BaseApp.java masukan souce code
package com.codetr.tanwir.databasesrealm; import android.app.Application; import io.realm.DynamicRealm; import io.realm.Realm; import io.realm.RealmConfiguration; import io.realm.RealmMigration; import io.realm.RealmSchema; public class BaseApp extends Application { @Override public void onCreate() { super.onCreate(); RealmConfiguration config = new RealmConfiguration.Builder(this) .schemaVersion(0) .migration(new DataMigration()) .build(); Realm.setDefaultConfiguration(config); } private class DataMigration implements RealmMigration { @Override public void migrate(DynamicRealm realm, long oldVersion, long newVersion) { RealmSchema schema = realm.getSchema(); if (oldVersion == 0) { schema.create("Siswa") .addField("id", int.class) .addField("nis", String.class) .addField("nama", String.class); oldVersion++; } } } } |
- RealmHelper.java masukan source code
package com.codetr.tanwir.databasesrealm.helper; import android.content.Context; import android.util.Log; import android.widget.Toast; import com.codetr.tanwir.databasesrealm.model.SiswaModel; import java.util.ArrayList; import io.realm.Realm; import io.realm.RealmResults; import io.realm.Sort; public class RealmHelper { private static final String TAG = "RealmHelper"; private Realm realm; private RealmResults<Siswa> realmResult; public Context context; public RealmHelper(Context context) { realm = Realm.getInstance(context); this.context = context; } public void addSiswa(String nis, String nama) { Siswa siswa = new Siswa(); siswa.setId((int) (System.currentTimeMillis() / 1000)); siswa.setNis(nis); siswa.setNama(nama); realm.beginTransaction(); realm.copyToRealm(siswa); realm.commitTransaction(); showLog("Added ; " + nis); showToast("Berhasil disimpan"); } public ArrayList<SiswaModel> findAllSiswa() { ArrayList<SiswaModel> data = new ArrayList<>(); realmResult = realm.where(Siswa.class).findAll(); realmResult.sort("id", Sort.DESCENDING); if (realmResult.size() > 0) { showLog("Size : " + realmResult.size()); for (int i = 0; i < realmResult.size(); i++) { String nis, nama; int id = realmResult.get(i).getId(); nis = realmResult.get(i).getNis(); nama = realmResult.get(i).getNama(); data.add(new SiswaModel(id, nis, nama)); } } else { showLog("Size : 0"); showToast("Data Siswa Kosong"); } return data; } public void updateSiswa(int id, String nis, String nama) { realm.beginTransaction(); Siswa article = realm.where(Siswa.class).equalTo("id", id).findFirst(); article.setNis(nis); article.setNama(nama); realm.commitTransaction(); showToast("Berhasil diupdate"); } public void deleteData(int id) { RealmResults<Siswa> dataDesults = realm.where(Siswa.class).equalTo("id", id).findAll(); realm.beginTransaction(); dataDesults.remove(0); dataDesults.removeLast(); dataDesults.clear(); realm.commitTransaction(); showToast("Hapus data berhasil"); } private void showLog(String s) { Log.d(TAG, s); } private void showToast(String s) { Toast.makeText(context, s, Toast.LENGTH_LONG).show(); } } |
- Siswa.java masukan souce code
package com.codetr.tanwir.databasesrealm.helper; import io.realm.RealmObject; import io.realm.annotations.PrimaryKey; public class Siswa extends RealmObject { @PrimaryKey private int id; private String nis; private String nama; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNis() { return nis; } public void setNis(String nis) { this.nis = nis; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } } |
- SiswaMode.java masukan souce code
package com.codetr.tanwir.databasesrealm.model; public class SiswaModel { private int id; private String nis; private String nama; public SiswaModel(int id, String nis, String nama) { this.id = id; this.nis = nis; this.nama = nama; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNis() { return nis; } public void setNis(String nis) { this.nis = nis; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } }
|
- AdapterSiswa.java masukan source code
package com.codetr.tanwir.databasesrealm.adapter; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.codetr.tanwir.databasesrealm.R; import com.codetr.tanwir.databasesrealm.model.SiswaModel; import java.util.ArrayList; public class AdapterSiswa extends RecyclerView.Adapter<AdapterSiswa.ViewHolder> { private final OnItemClickListener listener; private ArrayList<SiswaModel> lsiswa; public AdapterSiswa(ArrayList<SiswaModel> lsiswa, OnItemClickListener listener) { this.lsiswa = lsiswa; this.listener = listener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_siswa, null); ViewHolder vh = new ViewHolder(view); return vh; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.click(lsiswa.get(position), listener); holder.tvId.setText(String.valueOf(lsiswa.get(position).getId())); holder.nis.setText(lsiswa.get(position).getNis()); holder.nama.setText(lsiswa.get(position).getNama()); } @Override public int getItemCount() { return lsiswa.size(); } public class ViewHolder extends RecyclerView.ViewHolder { TextView tvId, nis, nama; public ViewHolder(View itemView) { super(itemView); tvId = (TextView) itemView.findViewById(R.id.tvId); nis = (TextView) itemView.findViewById(R.id.tvNis); nama = (TextView) itemView.findViewById(R.id.tvNama); } public void click(final SiswaModel articleModel, final OnItemClickListener listener) { itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(articleModel); } }); } } public interface OnItemClickListener { void onClick(SiswaModel item); } } |
- Terakhir diabagian MainActivity.java masukan souce code berikut
package com.codetr.tanwir.databasesrealm.activity; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.View; import com.codetr.tanwir.databasesrealm.R; import com.codetr.tanwir.databasesrealm.adapter.AdapterSiswa; import com.codetr.tanwir.databasesrealm.helper.RealmHelper; import com.codetr.tanwir.databasesrealm.model.SiswaModel; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private RecyclerView recyclerView; private RealmHelper helper; private ArrayList<SiswaModel> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setLogo(R.mipmap.ic_launcher); toolbar.setTitle(" Data Siswa"); setSupportActionBar(toolbar); data = new ArrayList<>(); helper = new RealmHelper(MainActivity.this); recyclerView = (RecyclerView) findViewById(R.id.rvSiswa); recyclerView.setLayoutManager(new LinearLayoutManager(this)); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(getApplicationContext(), AddActivity.class)); finish(); } }); setRecyclerView(); } public void setRecyclerView() { try { data = helper.findAllSiswa(); } catch (Exception e) { e.printStackTrace(); } AdapterSiswa adapter = new AdapterSiswa(data, new AdapterSiswa.OnItemClickListener() { @Override public void onClick(SiswaModel item) { Intent i = new Intent(getApplicationContext(), EditActivity.class); i.putExtra("id", item.getId()); i.putExtra("nis", item.getNis()); i.putExtra("nama", item.getNama()); startActivity(i); finish(); } }); recyclerView.setAdapter(adapter); } @Override protected void onResume() { super.onResume(); try { data = helper.findAllSiswa(); } catch (Exception e) { e.printStackTrace(); } setRecyclerView(); } }
|
Output Aplikasi
Sekian artikel dari saya semoga bermanfaat, jika ada yang ditanyakan comment aja di bawah.
- Get link
- X
- Other Apps
Comments
Post a Comment