Menampilkan Data Menggunakan RecyclerView (Realm) Part 1


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.

Comments

Popular posts from this blog

PRIVACY POLICY BELMANDIYSAH

PRIVACY POLICY - APLICATION BELMANDIYSAH

Application Belmandiyah