Membuat Aplikasi Portal Berita dengan RestfulApi

Selamat Malam kali ini kita akan membuat aplikasi portal berita berbasis Android dengan menggunakan RestfulApi dan database MySQL
Pertama tambahkan beberapa despendecies berikut:
implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'com.squareup.retrofit2:converter-gson:2.3.0'implementation 'com.squareup.picasso:picasso:2.5.2'implementation 'com.android.support:recyclerview-v7:26.1.0'

Kemudian tambahkan permission internet pada Android Manifest
<uses-permission android:name="android.permission.INTERNET"/>

Untuk API nya saya sudah menguploadnya pada web hosting bisa diakses di http://giviews.000webhostapp.com/berita/tampil_berita.php 

Sekarang buat dua buah package pada folder java, yaitu package network dan response
susunan package file java

Buat sebuah interface ApiService.java pada package network lalu masukan kode berikut:
import com.khilman.www.aplikasiportalberita.response.ResponseBerita;

import retrofit2.Call;
import retrofit2.http.GET;

public interface ApiServices {

    //@TIPEMETHOD("API_END_POINT")    @GET("tampil_berita.php")
    Call request_show_all_berita();
    //  nama_method()
}



Sekarang buat class InitRetrofit.java pada package network dan masukan kode berikut:

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class InitRetrofit {
    // URL Server API    public static String API_URL = "http://giviews.000webhostapp.com/berita/";

    public static Retrofit setInit() {
        return new Retrofit.Builder().baseUrl(API_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public static ApiServices getInstance() {
        return setInit().create(ApiServices.class);
    }
}

Selanjutnya buat class BeritaItem.java pada package response dan tambahkan kode berikut: 
import com.google.gson.annotations.SerializedName;

public class BeritaItem{

   @SerializedName("penulis")
   private String penulis;

   @SerializedName("foto")
   private String foto;

   @SerializedName("id")
   private String id;

   @SerializedName("judul_berita")
   private String judulBerita;

   @SerializedName("tanggal_posting")
   private String tanggalPosting;

   @SerializedName("isi_berita")
   private String isiBerita;

   public void setPenulis(String penulis){
      this.penulis = penulis;
   }

   public String getPenulis(){
      return penulis;
   }

   public void setFoto(String foto){
      this.foto = foto;
   }

   public String getFoto(){
      return foto;
   }

   public void setId(String id){
      this.id = id;
   }

   public String getId(){
      return id;
   }

   public void setJudulBerita(String judulBerita){
      this.judulBerita = judulBerita;
   }

   public String getJudulBerita(){
      return judulBerita;
   }

   public void setTanggalPosting(String tanggalPosting){
      this.tanggalPosting = tanggalPosting;
   }

   public String getTanggalPosting(){
      return tanggalPosting;
   }

   public void setIsiBerita(String isiBerita){
      this.isiBerita = isiBerita;
   }

   public String getIsiBerita(){
      return isiBerita;
   }

   @Override   public String toString(){
      return          "BeritaItem{" + 
         "penulis = '" + penulis + '\'' + 
         ",foto = '" + foto + '\'' + 
         ",id = '" + id + '\'' + 
         ",judul_berita = '" + judulBerita + '\'' + 
         ",tanggal_posting = '" + tanggalPosting + '\'' + 
         ",isi_berita = '" + isiBerita + '\'' + 
         "}";
      }
}

Berikutnya buatlah class ResponseBerita.java pada package response dan masukan kode berikut: 
import java.util.List;
import com.google.gson.annotations.SerializedName;

public class ResponseBerita{

   @SerializedName("berita")
   private List berita;

   @SerializedName("status")
   private boolean status;

   public void setBerita(List berita){
      this.berita = berita;
   }

   public List getBerita(){
      return berita;
   }

   public void setStatus(boolean status){
      this.status = status;
   }

   public boolean isStatus(){
      return status;
   }

   @Override   public String toString(){
      return          "ResponseBerita{" + 
         "berita = '" + berita + '\'' + 
         ",status = '" + status + '\'' + 
         "}";
      }
}

Lalu buat Class AdapterBerita.java pada dan masukan kode berikut:
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.khilman.www.aplikasiportalberita.response.BeritaItem;
import com.squareup.picasso.Picasso;

import java.util.List;

class AdapterBerita extends RecyclerView.Adapter {
    // Buat Global variable untuk manampung context    Context context;
    List berita;
    public AdapterBerita(Context context, List data_berita) {
        // Inisialisasi        this.context = context;
        this.berita = data_berita;
    }

    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Layout inflater        View view = LayoutInflater.from(context).inflate(R.layout.berita_item, parent, false);

        // Hubungkan dengan MyViewHolder        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    }

    @Override    public void onBindViewHolder(MyViewHolder holder, final int position) {
        // Set widget        holder.tvJudul.setText(berita.get(position).getJudulBerita());
        holder.tvTglTerbit.setText(berita.get(position).getTanggalPosting());

        // Dapatkan url gambar        final String urlGambarBerita = "http://giviews.000webhostapp.com/berita/images/" + berita.get(position).getFoto();
        // Set image ke widget dengna menggunakan Library Piccasso        // krena imagenya dari internet        Picasso.with(context).load(urlGambarBerita).into(holder.ivGambarBerita);

        // Event klik ketika item list nya di klik        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                // Mulai activity Detail                Intent varIntent = new Intent(context, DetailActivity.class);
                // sisipkan data ke intent                varIntent.putExtra("JDL_BERITA", berita.get(position).getJudulBerita());
                varIntent.putExtra("TGL_BERITA", berita.get(position).getTanggalPosting());
                varIntent.putExtra("PNS_BERITA", berita.get(position).getPenulis());
                varIntent.putExtra("FTO_BERITA", urlGambarBerita);
                varIntent.putExtra("ISI_BERITA", berita.get(position).getIsiBerita());

                // method startActivity cma bisa di pake di activity/fragment                // jadi harus masuk ke context dulu                context.startActivity(varIntent);
            }
        });
    }
    // Menentukan Jumlah item yang tampil    @Override    public int getItemCount() {
        return berita.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        // Deklarasi widget        ImageView ivGambarBerita;
        TextView tvJudul, tvTglTerbit, tvPenulis;
        public MyViewHolder(View itemView) {
            super(itemView);
            // inisialisasi widget            ivGambarBerita = (ImageView) itemView.findViewById(R.id.ivPosterBerita);
            tvJudul = (TextView) itemView.findViewById(R.id.tvJudulBerita);
            tvTglTerbit = (TextView) itemView.findViewById(R.id.tvTglTerbit);
            tvPenulis = (TextView) itemView.findViewById(R.id.tvPenulis);
        }
    }
}

Kemudian buat class DetailActivity.java dan tambahkan kode berikut:
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

public class DetailActivity extends AppCompatActivity {

    // Deklarasi    ImageView ivGambarBerita;
    TextView tvTglTerbit, tvPenulis;
    WebView wvKontenBerita;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        // Inisialisasi        ivGambarBerita = (ImageView) findViewById(R.id.ivGambarBerita);
        tvTglTerbit = (TextView) findViewById(R.id.tvTglTerbit);
        tvPenulis = (TextView) findViewById(R.id.tvPenulis);
        wvKontenBerita = (WebView) findViewById(R.id.wvKontenBerita);

        // Jalankan method tampil detail berita        showDetailBerita();

    }

    private void showDetailBerita() {
        // Tangkap data dari intent        String judul_berita = getIntent().getStringExtra("JDL_BERITA");
        String tanggal_berita = getIntent().getStringExtra("TGL_BERITA");
        String penulis_berita = getIntent().getStringExtra("PNS_BERITA");
        String isi_berita = getIntent().getStringExtra("ISI_BERITA");
        String foto_berita = getIntent().getStringExtra("FTO_BERITA");

        // Set judul actionbar / toolbar        getSupportActionBar().setTitle(judul_berita);

        // Set ke widget        tvPenulis.setText("Oleh : " + penulis_berita);
        tvTglTerbit.setText(tanggal_berita);
        // Untuk gambar berita        Picasso.with(this).load(foto_berita).into(ivGambarBerita);
        // Set isi berita sebagai html ke WebView        wvKontenBerita.getSettings().setJavaScriptEnabled(true);
        wvKontenBerita.loadData(isi_berita, "text/html; charset=utf-8", "UTF-8");
    }
} 

Kemudian buat Class MainActivity.java dan tambahkan kode berikut:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.widget.Toast;

import com.khilman.www.aplikasiportalberita.network.ApiServices;
import com.khilman.www.aplikasiportalberita.network.InitRetrofit;
import com.khilman.www.aplikasiportalberita.response.BeritaItem;
import com.khilman.www.aplikasiportalberita.response.ResponseBerita;

import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {

    // Deklarasi Widget    private RecyclerView recyclerView;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Inisialisasi Widget        recyclerView = (RecyclerView) findViewById(R.id.rvListBerita);
        // RecyclerView harus pakai Layout manager        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // Eksekusi method        tampilBerita();
    }

    private void tampilBerita() {
        ApiServices api = InitRetrofit.getInstance();
        // Siapkan request        Call beritaCall = api.request_show_all_berita();
        // Kirim request        beritaCall.enqueue(new Callback() {
            @Override            public void onResponse(Call call, Response response) {
                // Pasikan response Sukses                if (response.isSuccessful()){
                    Log.d("response api", response.body().toString());
                    // tampung data response body ke variable                    List data_berita = response.body().getBerita();
                    boolean status = response.body().isStatus();
                    // Kalau response status nya = true                    if (status){
                        // Buat Adapter untuk recycler view                        AdapterBerita adapter = new AdapterBerita(MainActivity.this, data_berita);
                        recyclerView.setAdapter(adapter);
                    } else {
                        // kalau tidak true                        Toast.makeText(MainActivity.this, "Tidak ada berita untuk saat ini", Toast.LENGTH_SHORT).show();
                    }
                }
            }

            @Override            public void onFailure(Call call, Throwable t) {
                // print ke log jika Error                t.printStackTrace();
            }
        });
    }
}

Selanjutnya buat layout berita_item.xml kemudian masukan kode berikut:
xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:paddingVertical="5dp">
    <ImageView        android:id="@+id/ivPosterBerita"        android:layout_width="match_parent"        android:layout_height="130dp"        android:layout_marginHorizontal="10dp"        android:scaleType="fitXY"        android:src="@mipmap/ic_launcher"/>
    <TextView        android:id="@+id/tvJudulBerita"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textSize="18sp"        android:layout_marginVertical="10dp"        android:layout_marginHorizontal="10dp"        android:textColor="@android:color/black"        android:text="Judul Artikel Berita"/>
    <LinearLayout        android:layout_marginHorizontal="10dp"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">
        <TextView            android:id="@+id/tvTglTerbit"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="Sabtu, 12 Maret 2018."/>
        <TextView            android:id="@+id/tvPenulis"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginHorizontal="10dp"            android:text="Oleh : Rizal Hilman"/>
    </LinearLayout>
</LinearLayout>

Selanjutnya buat layout content_detail.xml dan tambahkan kode berikut: 
xml version="1.0" encoding="utf-8"?><android.support.v4.widget.NestedScrollView 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=".DetailActivity"    tools:showIn="@layout/activity_detail">


    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:padding="10dp"        android:orientation="vertical">
        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginBottom="15dp"            android:orientation="horizontal">
            <TextView                android:id="@+id/tvTglTerbit"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="Senin, 12 Maret 2018"/>
            <TextView                android:id="@+id/tvPenulis"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginHorizontal="10dp"                android:text="Oleh : Rizal Hilman"/>
        </LinearLayout>
        <WebView            android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/wvKontenBerita"></WebView>
    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

Berikutnya buat layout activity_main.xml dan masukan kode berikut: 
xml version="1.0" encoding="utf-8"?><LinearLayout 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:orientation="vertical"    tools:context=".MainActivity">
    <android.support.v7.widget.RecyclerView        android:id="@+id/rvListBerita"        android:layout_width="match_parent"        android:layout_height="match_parent" />
</LinearLayout>

Terakhir buat layout activity_detail.xml dan masukan kode berikut:
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:fitsSystemWindows="true"    tools:context="com.khilman.www.aplikasiportalberita.DetailActivity">

    <android.support.design.widget.AppBarLayout        android:id="@+id/app_bar"        android:layout_width="match_parent"        android:layout_height="@dimen/app_bar_height"        android:fitsSystemWindows="true"        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout            android:id="@+id/toolbar_layout"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:fitsSystemWindows="true"            app:contentScrim="?attr/colorPrimary"            app:layout_scrollFlags="scroll|exitUntilCollapsed"            app:toolbarId="@+id/toolbar">
            
            <ImageView                android:id="@+id/ivGambarBerita"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:src="@mipmap/ic_launcher"                android:scaleType="fitXY"/>

            <android.support.v7.widget.Toolbar                android:id="@+id/toolbar"                android:layout_width="match_parent"                android:layout_height="?attr/actionBarSize"                app:layout_collapseMode="pin"                app:popupTheme="@style/AppTheme.PopupOverlay" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_detail" />

    <android.support.design.widget.FloatingActionButton        android:id="@+id/fab"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_margin="@dimen/fab_margin"        app:layout_anchor="@id/app_bar"        app:layout_anchorGravity="bottom|end"        app:srcCompat="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

 
Sekarang coba jalankan aplikasi anda jika ada yang kurang jelas silakan ditanyakan pada kolom komentar dibawah, terimakasih sudah berkunjung ke blog kami semoga tutorial ini bermanfaat

sumber: https://medium.com/@rizal_hilman/aplikasi-portal-berita-android-dengan-php-mysqli-belajarapi-ccde39565403

Membuat Aplikasi CRUD Data Mahasiswa Menggunakan RESTful API di Android Studio


Pada postingan sebelumnya kita telah membuat API CRUD sederhana menggunakan PHP danMYSQL sekarang kita akan mengkonsumsi API yang sudah kita buat tersebut Pada kasus ini saya akan menggunakan API tadi di Projek Android dengan menggunakan library retrofit



Pertama-tama buat projek baru di Android Studio, kemudian tambahkan library retrofit pada build.gradle(module:app) di bagian  despendencies, kemudian klik sync now
implementation 'com.squareup.retrofit:retrofit:1.9.0'

lalu tambahkan network permission pada AndroidManifest
android:name="android.permission.INTERNET" />

android:name="android.permission.ACCESS_NETWORK_STATE" />

Untuk Susunan Folder nya seperti berikut:
Susunan Folder Projek di Android Studio


Kemudian buat Class BaseApp, kelas ini berfungsi untuk kumpulan perintah yang sering digunakan dalam pembuatan program, sehingga nanti dapat digunakan pada class lain. Berikut kode programnya: untuk ROOT_URL karena saya sudah menguploadnya pada web hosting jadi saya menggunakan url yang ada di web hosting saya, jika anda menyimpanya di localhost dan ingin mengaksesnya dari HP ganti url nya menjadi alamat IP komputer anda, dan pastikan HP dan komputer anda menggunakan jaringan wifi yang sama.
public class BaseApp extends AppCompatActivity {

    public static Context c;

    public static final String ROOT_URL = "http://giviews.000webhostapp.com";

    private static final int DEBUG = 1;

    public SessionManager sessionManager;

    AlphaAnimation btnAnimasi = new AlphaAnimation(1F,0.5F);



    public BaseApp() {

        sessionManager = new SessionManager(c);

    }



    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        c =  this;

    }



    public void pesan(String a){

        Toast.makeText(c, a, Toast.LENGTH_LONG).show();

    }



    //method untuk menghilangkan action bar

    public void fullScreen(){

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                WindowManager.LayoutParams.FLAG_FULLSCREEN);

    }



    private class SessionManager {

        public SessionManager(Context c) {

        }

    }

}

selanjutnya membuat class Model Mahasiswa, Class ini berisi geter dan seter yang nanti akan digunakan ketika get data dan set data mahasiswa, berikut kode programnya:
public class DataMahasiswa {

    private String nim;

    private String nama;

    private String alamat;

    private String jurusan;



    public String getNim() {

        return nim;

    }

    public void setNim(String nim) {

        this.nim = nim;

    }

    public String getNama() {

        return nama;

    }

    public void setNama(String nama) {

        this.nama = nama;

    }

    public String getAlamat() {

        return alamat;

    }

    public void setAlamat(String alamat) {

        this.alamat = alamat;

    }

    public String getJurusan() {

        return jurusan;

    }

    public void setJurusan(String jurusan) {

        this.jurusan = jurusan;

    }

}

kemudian buat Class CDataMahasiswa, berikut kode programnya:
public class CDataMahasiswa {





    private List DataMahasiswa = new ArrayList();



    public List getDataMahasiswa() {

        return DataMahasiswa;

    }



    public void setDataMahasiswa(List DataMahasiswa) {

        this.DataMahasiswa = DataMahasiswa;

    }

}

selanjutnya membuat interface ModuleApi.java berikut kode programnya: Class ini berfungsi untuk mengakses API nya
interface ModuleAPI {



    //getdata

    @GET("/server_api/view.php")

    public void getDataMahasiswa(Callback callback);



    //update

    @FormUrlEncoded

    @POST("/server_api/update.php")

    public void updateData(

            @Field("vsnim") String vsnim,

            @Field("vsnama") String vsnama,

            @Field("vsalamat") String vsalamat,

            @Field("vsjurusan") String vsjurusan,

            Callback callback);



    //insert

    @FormUrlEncoded

    @POST("/server_api/create.php")

    public void insertData(

            @Field("vsnim") String vsnim,

            @Field("vsnama") String vsnama,

            @Field("vsalamat") String vsalamat,

            @Field("vsjurusan") String vsjurusan,

            Callback callback);



    //delete

    @FormUrlEncoded

    @POST("/server_api/delete.php")

    public void deleteData(

            @Field("vsnim") String vsnim,

            Callback callback);

    }

Selanjutnya Membuat DataMahasiswaActivity.java berikut kode programnya:
public class DataMahasiswaActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {

    ProgressDialog progressDialog;

    Dialog dialog, dialog2;

    List listdatamahasiswa;

    String strnim, strnama, strjurusan, stralamat;

    ListView listmahasiswa;

    Button update, delete, reset, insert;

    SwipeRefreshLayout swipeRefreshLayout;

    EditText nimmhs, namamhs, alamatmhs, jurusanmhs;

    AdapterCariMahasiswa cariMahasiswa;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_data_mahasiswa);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

        fab.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                dialog2 = new Dialog(DataMahasiswaActivity.this);

                dialog2.setTitle("data mahasiswa");

                dialog2.setCanceledOnTouchOutside(false);

                dialog2.setContentView(R.layout.tampilaninsertdata);



                nimmhs = (EditText) dialog2.findViewById(R.id.edtnim);

                namamhs = (EditText) dialog2.findViewById(R.id.edtnama);

                jurusanmhs = (EditText) dialog2.findViewById(R.id.edtjurusan);

                alamatmhs = (EditText) dialog2.findViewById(R.id.edtalamat);





                insert = (Button) dialog2.findViewById(R.id.btninsert);

                reset = (Button) dialog2.findViewById(R.id.btnreset);

                reset.setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        nimmhs.setText("");

                        namamhs.setText("");

                        alamatmhs.setText("");

                        jurusanmhs.setText("");



                    }

                });

                insert.setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        strnim = nimmhs.getText().toString();

                        strnama = namamhs.getText().toString();

                        strjurusan = jurusanmhs.getText().toString();

                        stralamat = alamatmhs.getText().toString();



                        insertDataMahasiswa();

                        getDataMahasiswa();



                    }

                });

                dialog2.show();

            }

        });



        //inisialisasi

        listmahasiswa = (ListView) findViewById(R.id.listmahasiswa);

        swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);

        swipeRefreshLayout.setOnRefreshListener(this);

        swipeRefreshLayout.post(new Runnable() {

                                    @Override

                                    public void run() {



                                        getDataMahasiswa();

                                    }

                                }

        );

    }



    private void getDataMahasiswa() {

        overridePendingTransition(0, 0);

        progressDialog = ProgressDialog.show(DataMahasiswaActivity.this, "", " Proses...");

        RestAdapter adapter = new RestAdapter.Builder()

                .setEndpoint(ROOT_URL) //Setting the Root URL

                .build(); //Finally building the adapter



        //Creating object for our interface

        ModuleAPI api = adapter.create(ModuleAPI.class);



        //Calling method to get whether report

        api.getDataMahasiswa(



                new Callback() {

                    @Override

                    public void success(CDataMahasiswa cdataMahasiswa, Response response) {

                        listdatamahasiswa = new ArrayList();

                        listdatamahasiswa = cdataMahasiswa.getDataMahasiswa();

                        final String[] nim = new String[listdatamahasiswa.size()];

                        final String[] nama = new String[listdatamahasiswa.size()];

                        final String[] alamat = new String[listdatamahasiswa.size()];

                        final String[] jurusan = new String[listdatamahasiswa.size()];



                        for (int i = 0; i < listdatamahasiswa.size(); i++) {

                            nim[i] = listdatamahasiswa.get(i).getNim().toString();

                            nama[i] = listdatamahasiswa.get(i).getNama().toString();

                            alamat[i] = listdatamahasiswa.get(i).getAlamat().toString();

                            jurusan[i] = listdatamahasiswa.get(i).getJurusan().toString();

                        }



                        cariMahasiswa = new AdapterCariMahasiswa(DataMahasiswaActivity.this, nim, nama,

                                alamat, jurusan);

                        listmahasiswa.setAdapter(cariMahasiswa);

                        listmahasiswa.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                            @Override

                            public void onItemClick(AdapterView parent, View view, int position, long id) {

                                dialog = new Dialog(DataMahasiswaActivity.this);

                                dialog.setTitle("data mahasiswa");

                                dialog.setCanceledOnTouchOutside(false);

                                dialog.setContentView(R.layout.tampilaneditdata);



                                nimmhs = (EditText) dialog.findViewById(R.id.edtnim);

                                namamhs = (EditText) dialog.findViewById(R.id.edtnama);

                                jurusanmhs = (EditText) dialog.findViewById(R.id.edtjurusan);

                                alamatmhs = (EditText) dialog.findViewById(R.id.edtalamat);



                                nimmhs.setEnabled(false);

                                nimmhs.setText(nim[position]);

                                namamhs.setText(nama[position]);

                                jurusanmhs.setText(jurusan[position]);

                                alamatmhs.setText(alamat[position]);

                                update = (Button) dialog.findViewById(R.id.btnupdate);

                                delete = (Button) dialog.findViewById(R.id.btnhapus);

                                reset = (Button) dialog.findViewById(R.id.btnreset);



                                reset.setOnClickListener(new View.OnClickListener() {

                                    @Override

                                    public void onClick(View v) {

                                        nimmhs.setText("");

                                        namamhs.setText("");

                                        alamatmhs.setText("");

                                        jurusanmhs.setText("");



                                    }

                                });

                                update.setOnClickListener(new View.OnClickListener() {

                                    @Override

                                    public void onClick(View v) {

                                        updateDataMahasiswa();

                                        getDataMahasiswa();

                                    }

                                });

                                delete.setOnClickListener(new View.OnClickListener() {

                                    @Override

                                    public void onClick(View v) {

                                        strnim = nimmhs.getText().toString();

                                        hapusDataMahasiswa();

                                        getDataMahasiswa();

                                    }

                                });

                                dialog.show();

                            }

                        });



                        progressDialog.dismiss();

                    }



                    @Override

                    public void failure(RetrofitError error) {



                        String merror = error.getMessage();

                        progressDialog.dismiss();

                        Toast.makeText(DataMahasiswaActivity.this, "err " + merror.toString(),

                                Toast.LENGTH_LONG).show();

                    }

                }



        );





    }



    private void hapusDataMahasiswa() {

        RestAdapter adapter = new RestAdapter.Builder()

                .setEndpoint(ROOT_URL) //Setting the Root URL

                .build(); //Finally building the adapter



        //Creating object for our interface

        ModuleAPI api = adapter.create(ModuleAPI.class);



        //Defining the method insertuser of our interface

        api.deleteData(

                //Passing the values by getting it from editTexts

                strnim.toString(),

                //Creating an anonymous callback

                new Callback() {

                    @Override

                    public void success(Response result, Response response) {

                        Toast.makeText(DataMahasiswaActivity.this, "informasi \n",

                                Toast.LENGTH_SHORT).show();

                        dialog.dismiss();

                    }



                    @Override

                    public void failure(RetrofitError error) {

                        //If any error occured displaying the error as toast

                        Toast.makeText(DataMahasiswaActivity.this, "Kesalahan Koneksi Data",

                                Toast.LENGTH_LONG).show();

                        dialog.setCancelable(false);

                    }

                }

        );



    }



    private void insertDataMahasiswa() {

        RestAdapter adapter = new RestAdapter.Builder()

                .setEndpoint(ROOT_URL) //Setting the Root URL

                .build(); //Finally building the adapter



        //Creating object for our interface

        ModuleAPI api = adapter.create(ModuleAPI.class);



        //Defining the method insertuser of our interface

        api.insertData(

                //Passing the values by getting it from editTexts

                strnim.toString(),

                strnama.toString(),

                stralamat.toString(),

                strjurusan.toString(),



                //Creating an anonymous callback

                new Callback() {

                    @Override

                    public void success(Response result, Response response) {

                        //On success we will read the server's output using bufferedreader

                        //Creating a bufferedreader object

                        BufferedReader reader = null;



                        //An string to store output from the server

                        String output = "";



                        try {

                            //Initializing buffered reader

                            reader = new BufferedReader(new InputStreamReader(result.getBody().in()));



                            //Reading the output in the string

                            output = reader.readLine();

                        } catch (IOException e) {

                            e.printStackTrace();

                        }

                        //  btncall.setEnabled(true);

                        Toast.makeText(DataMahasiswaActivity.this, "informasi \n" + output,

                                Toast.LENGTH_SHORT).show();



                        overridePendingTransition(0, 0);

                        dialog2.dismiss();

                    }



                    @Override

                    public void failure(RetrofitError error) {

                        //If any error occured displaying the error as toast

                        Toast.makeText(DataMahasiswaActivity.this, "Kesalahan Koneksi Data",

                                Toast.LENGTH_LONG).show();

                        dialog2.setCancelable(false);

                        //  btncall.setEnabled(true);

                    }

                }

        );

    }



    private void updateDataMahasiswa() {

        //Here we will handle the http request to insert user to mysql db

        //Creating a RestAdapter

        strnim = nimmhs.getText().toString();

        strnama = namamhs.getText().toString();

        strjurusan = jurusanmhs.getText().toString();

        stralamat = alamatmhs.getText().toString();



        RestAdapter adapter = new RestAdapter.Builder()

                .setEndpoint(ROOT_URL) //Setting the Root URL

                .build(); //Finally building the adapter



        //Creating object for our interface

        ModuleAPI api = adapter.create(ModuleAPI.class);



        //Defining the method insertuser of our interface

        api.updateData(

                //Passing the values by getting it from editTexts

                strnim.toString(),

                strnama.toString(),

                stralamat.toString(),

                strjurusan.toString(),

                //Creating an anonymous callback

                new Callback() {

                    @Override

                    public void success(Response result, Response response) {

                        //On success we will read the server's output using bufferedreader

                        //Creating a bufferedreader object

                        BufferedReader reader = null;



                        //An string to store output from the server

                        String output = "";



                        try {

                            //Initializing buffered reader

                            reader = new BufferedReader(new InputStreamReader(result.getBody().in()));



                            //Reading the output in the string

                            output = reader.readLine();

                            Toast.makeText(DataMahasiswaActivity.this, "informasi \n" + output,

                                    Toast.LENGTH_SHORT).show();

                        } catch (IOException e) {

                            e.printStackTrace();

                        }

                        dialog.dismiss();

                    }



                    @Override

                    public void failure(RetrofitError error) {

                        //If any error occured displaying the error as toast

                        Toast.makeText(DataMahasiswaActivity.this, "Kesalahan Koneksi Data",

                                Toast.LENGTH_LONG).show();

                        dialog.setCancelable(false);

                        //  btncall.setEnabled(true);

                    }

                }

        );

    }



    @Override

    public void onRefresh() {

        getDataMahasiswa();

        swipeRefreshLayout.setRefreshing(false);

        overridePendingTransition(0, 0);

        overridePendingTransition(0, 0);



    }



}

Membuat activity_data_mahasiswa.xml, tambahkan kode berikut:
xml version="1.0" encoding="utf-8"?>

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"

    tools:context="giviews.id.crud_mahasiswa.DataMahasiswaActivity">



    
        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:theme="@style/AppTheme.AppBarOverlay">



        
            android:id="@+id/toolbar"

            android:layout_width="match_parent"

            android:layout_height="?attr/actionBarSize"

            android:background="?attr/colorPrimary"

            app:popupTheme="@style/AppTheme.PopupOverlay" />



    



    layout="@layout/data_mahasiswa" />



    
        android:id="@+id/fab"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="bottom|end"

        android:layout_margin="@dimen/fab_margin"

        app:srcCompat="@android:drawable/ic_dialog_email" />





Kemudian data_mahasiswa.xml disini untuk memasukan listviewnya, berikut ini kode nya:
xml version="1.0" encoding="utf-8"?>


    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:id="@+id/swipe_refresh_layout"

    android:layout_height="match_parent"

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

    tools:showIn="@layout/data_mahasiswa">



    
        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:id="@+id/listmahasiswa">




Membuat AdapterCari Mahasiswa.java, berikut kode programnya:
public class AdapterCariMahasiswa extends BaseAdapter {



    public Context activity;

    private String[] nim, nama, alamat, jurusan;

    public TextView tvnamamahasiswa, tvnim, tvjurusan, tvalamat;

    private static LayoutInflater inflater = null;



    public AdapterCariMahasiswa(DataMahasiswaActivity dataMahasiswaActivity, String[] nim, String[]

            nama, String[] alamat, String[] jurusan) {

        activity = dataMahasiswaActivity;

        this.nim = nim;

        this.nama = nama;

        this.alamat = alamat;

        this.jurusan = jurusan;

    }

    @Override

    public int getCount() {

        return nama.length;

    }



    @Override

    public Object getItem(int position) {

        return position;

    }



    @Override

    public long getItemId(int position) {

        return position;

    }





    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater)

                activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = inflater.inflate(R.layout.layoutlistcarimahasiswa, null);

        tvnamamahasiswa = (TextView) convertView.findViewById(R.id.tvnamamahasiswa);

        tvnim = (TextView) convertView.findViewById(R.id.tvnim);

        tvjurusan = (TextView) convertView.findViewById(R.id.tvjurusan);

        tvalamat = (TextView) convertView.findViewById(R.id.tvalamat);



        tvnamamahasiswa.setText(nama[position].toString());

        tvnim.setText(nim[position].toString());

        tvjurusan.setText(jurusan[position].toString());

        tvalamat.setText(alamat[position].toString());

        return convertView;

    }



}

selanjutnya tambhkan kode berikut pada layoutcarimahasiswa.xml:
xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:orientation="vertical">



    
        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:background="#ffffff"

        android:orientation="horizontal">





        
            android:id="@+id/layoutkanan"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:orientation="horizontal">



            
                android:layout_width="70dp"

                android:layout_height="wrap_content"

                android:orientation="vertical">



                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text="nim"

                    android:textColor="#000000"

                    android:textSize="12sp" />



                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text="nama"

                    android:textColor="#000000"

                    android:textSize="12sp" />





                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text="jurusan"

                    android:textColor="#000000"

                    android:textSize="15sp" />



                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text="alamat"

                    android:textColor="#000000"

                    android:textSize="12sp" />



            



            
                android:layout_width="10dp"

                android:layout_height="wrap_content"

                android:orientation="vertical">



                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text=":"

                    android:textColor="#000000"

                    android:textSize="12sp" />



                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text=":"

                    android:textColor="#000000"

                    android:textSize="12sp" />





                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text=":"

                    android:textColor="#000000"

                    android:textSize="15sp" />



                
                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_margin="2dp"

                    android:text=":"

                    android:textColor="#000000"

                    android:textSize="12sp" />





            


                            android:layout_width="match_parent"
               
android:layout_height="wrap_content"
               
android:orientation="vertical">
                                   
android:id="@+id/tvnim"
                   
android:layout_width="wrap_content"
                   
android:layout_height="wrap_content"
                   
android:layout_margin="2dp"
                    
android:hint="nim"
                   
android:textColor="#000000"
                   
android:textColorHint="#000000"
                   
android:textSize="12sp" />

                                   
android:id="@+id/tvnamamahasiswa"
                   
android:layout_width="wrap_content"
                   
android:layout_height="wrap_content"
                   
android:layout_margin="2dp"
                   
android:hint="nama"
                   
android:textColor="#000000"
                   
android:textColorHint="#000000"
                   
android:textSize="12sp" />


                                   
android:id="@+id/tvjurusan"
                   
android:layout_width="wrap_content"
                    
android:layout_height="wrap_content"
                   
android:layout_margin="2dp"
                   
android:hint="jurusan"
                   
android:textColor="#000000"
                   
android:textColorHint="#000000"
                    
android:textSize="15sp" />

                                   
android:id="@+id/tvalamat"
                   
android:layout_width="wrap_content"
                   
android:layout_height="wrap_content"
                   
android:layout_margin="2dp"
                   
android:hint="alamat"
                   
android:textColor="#000000"
                   
android:textColorHint="#000000"
                   
android:textSize="12sp" />


           


       

 

Kemudian tambahkan kode berikut pada layout tampilaneditdata.xml:
xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">



    
        android:id="@+id/edtnim"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="nim"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:id="@+id/edtnama"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="nama"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:id="@+id/edtjurusan"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="jurusan"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:id="@+id/edtalamat"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="alamat"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:layout_width="match_parent"

        android:layout_height="wrap_content">

        android:id="@+id/btnupdate"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="update"

            android:layout_weight="1"/>



        android:layout_weight="1"

            android:id="@+id/btnhapus"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="hapus" />

        android:layout_weight="1"

            android:id="@+id/btnreset"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="reset" />





    



Kemudian tambahkan kode berikut pada layout tampilaninserdata.xml :

xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">



    
        android:id="@+id/edtnim"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="nim"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:id="@+id/edtnama"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="nama"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:id="@+id/edtjurusan"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="jurusan"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:id="@+id/edtalamat"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="alamat"

        android:inputType="text"

        android:textSize="25sp" />



    
        android:layout_width="match_parent"

        android:layout_height="wrap_content">



        android:id="@+id/btninsert"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="insert"

            android:layout_weight="1"/>



        android:layout_weight="1"

            android:id="@+id/btnreset"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="reset" />

    



Selanjutnya jalankan programnya, jika tampil data nya berarti anda telah berhasil membuat program dengan menggunakan Restful Api di android, sekianlah tutorial kali ini semoga bermanfaat, jika ada yang ingin ditanyakan silakan tuliskan pertanyaan anda pada kolom komentar di bawah.

tampilan view Data Mahasiswa
tampilan insert data Mahasiswa
tampilan edit Data Mahasiswa