0
0
0
share
#Android#api#rest#retrofit
0 Komentar
REST API Client Sederhana dengan Retrofit pada Android Studio
Pada arsitektur REST, REST server menyediakan resources yang direpresentasikan dalam bentuk format teks, JSON atau XML. JSON singkatan dari JavaScript Object adalah suatu format ringkas pertukaran data yang sering digunakan untuk mentransmisikan data terstruktur melalui suatu koneksi jaringan pada suatu proses yang disebut serialisasi dan dapat direpresentasikan oleh berbagai bahsa pemrograman.
Resource yang berbentuk format JSON yang disediakan REST server dapat dimanfaatkan oleh aplikasi android dengan library Retrofit. Retrofit adalah library Rest Client untuk android dan java dari squareup.
Sebagai contoh penerapan REST API Client pada aplikasi android dibawah ini akan dijelaskan langkah-langkah pembuatan REST API Client dengan android studio yang akan memanfaatkan sumber daya dari REST API server yang sebelumnya telah dibuat di Aplikasi web REST API Client Sederhana dengan Codeigniter 3.
Persiapan Server
Dalam pembuatan Rest api client ini diperlukan :
- Webserver seperti Xampp, Wampp, dan lainnya.
- REST API Server yang sebelumnya dibuat pada Aplikasi web REST API Client Sederhana dengan Codeigniter 3.
Setelah semua yang dibutuhkan telah siap dan REST server telah dapat bekerja, buat file php baru dengan nama kontak_android.php pada direktori rest_ci/application/controllers/
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require APPPATH . '/libraries/REST_Controller.php';
use Restserver\Libraries\REST_Controller;
class Kontak_android extends REST_Controller {
function __construct($config = 'rest') {
parent::__construct($config);
}
//Menampilkan data kontak
function index_get() {
$kontak = $this->db->get('telepon')->result();
$this->response(array("result"=>$kontak, 200));
}
}
?>
Persiapan Client
Untuk menguji keberhasilan aplikasi yang akan dibuat, siapkan smartphone android untuk meng-compile aplikasi dan pastikan smartphone tersebut dan komputer anda berada pada satu jaringan LAN/WLAN. Jika perlu catat alamat ip komputer anda yang terhubung satu jaringan dengan smartphone untuk konfigurasi REST client nantinya.
- Buat project baru dengan nama "kontak" lalu klik next, pilih versi android minimal android 5.1 lalu klik next, pilih empty activity lalu klik next, selanjutnya klik finish.
- Buat 2 activity baru dengan nama InsertActivity dan EditActivity dengan cara klik kanan pada logo folder java pilih new, pilih activity, lalu klik empty activity.
- Buat 3 package baru dengan nama Adapter, Model, dan Rest dengan cara klik kanan pada package kontak pilih new, klik package. Sehingga struktur package akan menjadi seperti dibawah ini
- Buka AndroidManifest.xml pada package manifests dan tambahkan
<uses-permission android:name="android.permission.INTERNET"/>
sebelum tag<aplication ...></aplication>
- Buka build.gradle(Module:App) tambahkan
// retrofit, gson
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
//recyclerview
compile 'com.android.support:recyclerview-v7:24.2.0'
Model
Di dalam package Model buat 3 buah class baru dengan nama Kontak, GetKontak, PostPutDelKontak.
Kontak
Class kontak berisi constructor dari atribut-atribut yang diperlukan pada REST server kontak dan setter dan getter untuk masing-masing atribut tersebut.
package com.example.root.kontak.Model;
import com.google.gson.annotations.SerializedName;
/**
* Created by root on 2/3/17.
*/
public class Kontak {
@SerializedName("id")
private String id;
@SerializedName("nama")
private String nama;
@SerializedName("nomor")
private String nomor;
public Kontak(){}
public Kontak(String id, String nama, String nomor) {
this.id = id;
this.nama = nama;
this.nomor = nomor;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNomor() {
return nomor;
}
public void setNomor(String nomor) {
this.nomor = nomor;
}
}
GetKontak
Class GetKontak berfungsi untuk mengimprentasikan respon dari REST server dalam hal menampilkan data.
package com.example.root.kontak.Model;
import com.google.gson.annotations.SerializedName;
import java.util.List;
/**
* Created by root on 2/3/17.
*/
public class GetKontak {
@SerializedName("status")
String status;
@SerializedName("result")
List<Kontak> listDataKontak;
@SerializedName("message")
String message;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<Kontak> getListDataKontak() {
return listDataKontak;
}
public void setListDataKontak(List<Kontak> listDataKontak) {
this.listDataKontak = listDataKontak;
}
}
PostPutDelKontak
Class GetKontak berfungsi untuk mengimprentasikan respon dari REST server dalam hal manipulasi data.
package com.example.root.kontak.Model;
import com.google.gson.annotations.SerializedName;
/**
* Created by root on 2/3/17.
*/
public class PostPutDelKontak {
@SerializedName("status")
String status;
@SerializedName("result")
Kontak mKontak;
@SerializedName("message")
String message;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Kontak getKontak() {
return mKontak;
}
public void setKontak(Kontak Kontak) {
mKontak = Kontak;
}
}
Rest
Pada package Rest buat sebuah class baru dengan nama ApiClient dan sebuah Interface baru dengan nama ApiInterface.
ApiClient
Dalam ApiClient terdapat fungsi untuk membuat koneksi dengan Rest server dan konfigurasi dari alamat Ip komputer yang berperan sebagai Rest server disini alamat Ip saya 192.168.43.201 diikuti directori akses dari Rest server tersebut.
package com.example.root.kontak.Rest;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* Created by root on 2/3/17.
*/
public class ApiClient {
public static final String BASE_URL = "http://192.168.43.201/rest_ci/index.php/";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
ApiInterface
Pada ApiInterface terdapat metode-metode yang akan digunakan dalam komunikasi data dengan Rest server serta atribut-atribut yang digunakan dalam komunikasi data tersebut.
package com.example.root.kontak.Rest;
/**
* Created by root on 2/3/17.
*/
import com.example.root.kontak.Model.GetKontak;
import com.example.root.kontak.Model.PostPutDelKontak;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.HTTP;
import retrofit2.http.POST;
import retrofit2.http.PUT;
public interface ApiInterface {
@GET("kontak_android")
Call<GetKontak> getKontak();
@FormUrlEncoded
@POST("kontak")
Call<PostPutDelKontak> postKontak(@Field("nama") String nama,
@Field("nomor") String nomor);
@FormUrlEncoded
@PUT("kontak")
Call<PostPutDelKontak> putKontak(@Field("id") String id,
@Field("nama") String nama,
@Field("nomor") String nomor);
@FormUrlEncoded
@HTTP(method = "DELETE", path = "kontak", hasBody = true)
Call<PostPutDelKontak> deleteKontak(@Field("id") String id);
}
Adapter
Kontak_list
Pada layout Kontak_list terdapat TextView untuk id, nama, dan nomor.
<?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">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<TextView
android:id="@+id/tvId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Id"
android:layout_alignParentRight="true"
android:textSize="15sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tvNama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Nama"
android:layout_below="@id/tvId"
android:textSize="15sp"
/>
<TextView
android:id="@+id/tvNomor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Nomor"
android:textSize="15sp"
android:layout_below="@id/tvNama"
/>
</RelativeLayout>
<View
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="5dp"/>
</LinearLayout>
KontakAdapter
Dengan KontakAdapter RecyclerView pada MainActivity akan menampilkan data yang diterima dengan layout yang telah didefinisikan pada kontak_list.
package com.example.root.kontak.Adapter;
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.TextView;
import com.example.root.kontak.EditActivity;
import com.example.root.kontak.Model.Kontak;
import com.example.root.kontak.R;
import java.util.List;
/**
* Created by root on 2/3/17.
*/
public class KontakAdapter extends RecyclerView.Adapter<KontakAdapter.MyViewHolder>{
List<Kontak> mKontakList;
public KontakAdapter(List <Kontak> KontakList) {
mKontakList = KontakList;
}
@Override
public MyViewHolder onCreateViewHolder (ViewGroup parent,int viewType){
View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.kontak_list, parent, false);
MyViewHolder mViewHolder = new MyViewHolder(mView);
return mViewHolder;
}
@Override
public void onBindViewHolder (MyViewHolder holder,final int position){
holder.mTextViewId.setText("Id = " + mKontakList.get(position).getId());
holder.mTextViewNama.setText("Nama = " + mKontakList.get(position).getNama());
holder.mTextViewNomor.setText("Nomor = " + mKontakList.get(position).getNomor());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent mIntent = new Intent(view.getContext(), EditActivity.class);
mIntent.putExtra("Id", mKontakList.get(position).getId());
mIntent.putExtra("Nama", mKontakList.get(position).getNama());
mIntent.putExtra("Nomor", mKontakList.get(position).getNomor());
view.getContext().startActivity(mIntent);
}
});
}
@Override
public int getItemCount () {
return mKontakList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView mTextViewId, mTextViewNama, mTextViewNomor;
public MyViewHolder(View itemView) {
super(itemView);
mTextViewId = (TextView) itemView.findViewById(R.id.tvId);
mTextViewNama = (TextView) itemView.findViewById(R.id.tvNama);
mTextViewNomor = (TextView) itemView.findViewById(R.id.tvNomor);
}
}
}
MainActivity
MainActivity terdiri dari layout MainActivity.xml pada package res/layout dan MainActivity.java pada package java/kontak.
MainActivity.xml
Pada layout MainActivity.xml terdapat Tombol untuk membuka form InsertActivity dan RecyclerView yang menampilkan data kontak.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.root.kontak.MainActivity">
<Button
android:id="@+id/btIns"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insert"
android:layout_margin="10dp"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/btIns">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
MainActivity.java
package com.example.root.kontak;
import android.content.Intent;
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.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.example.root.kontak.Adapter.KontakAdapter;
import com.example.root.kontak.Model.GetKontak;
import com.example.root.kontak.Model.Kontak;
import com.example.root.kontak.Rest.ApiClient;
import com.example.root.kontak.Rest.ApiInterface;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
Button btIns;
ApiInterface mApiInterface;
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
public static MainActivity ma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btIns = (Button) findViewById(R.id.btIns);
btIns.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, InsertActivity.class));
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mApiInterface = ApiClient.getClient().create(ApiInterface.class);
ma=this;
refresh();
}
public void refresh() {
Call<GetKontak> kontakCall = mApiInterface.getKontak();
kontakCall.enqueue(new Callback<GetKontak>() {
@Override
public void onResponse(Call<GetKontak> call, Response<GetKontak>
response) {
List<Kontak> KontakList = response.body().getListDataKontak();
Log.d("Retrofit Get", "Jumlah data Kontak: " +
String.valueOf(KontakList.size()));
mAdapter = new KontakAdapter(KontakList);
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onFailure(Call<GetKontak> call, Throwable t) {
Log.e("Retrofit Get", t.toString());
}
});
}
}
InsertActivity
InsertActivity terdiri dari layout InsertActivity.xml pada package res/layout dan InsertActivity.java pada package java/kontak.
InsertActivity.xml
Pada layout InsertActivity.xml berisi EditText untuk nama dan nomor serta Button untuk tombol Back dan Insert.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_insert"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.root.kontak.InsertActivity">
<TextView
android:id="@+id/tvNama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama : "
android:textSize="20sp"/>
<TextView
android:id="@+id/tvNomor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nomor : "
android:layout_below="@id/tvNama"
android:textSize="20sp"/>
<EditText
android:id="@+id/edtNama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Nama"
android:layout_toRightOf="@+id/tvNama"
android:layout_alignBaseline="@+id/tvNama"/>
<EditText
android:id="@+id/edtNomor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Nomor"
android:layout_toRightOf="@+id/tvNomor"
android:layout_alignBaseline="@+id/tvNomor"/>
<LinearLayout
android:id="@+id/Linearlayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/tvNomor"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<Button
android:id="@+id/btInserting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insert"/>
<Button
android:id="@+id/btBackGo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"/>
</LinearLayout>
</RelativeLayout>
InsertActivity.java
package com.example.root.kontak;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.root.kontak.Model.PostPutDelKontak;
import com.example.root.kontak.Rest.ApiClient;
import com.example.root.kontak.Rest.ApiInterface;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class InsertActivity extends AppCompatActivity {
EditText edtNama, edtNomor;
Button btInsert, btBack;
ApiInterface mApiInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insert);
edtNama = (EditText) findViewById(R.id.edtNama);
edtNomor = (EditText) findViewById(R.id.edtNomor);
mApiInterface = ApiClient.getClient().create(ApiInterface.class);
btInsert = (Button) findViewById(R.id.btInserting);
btInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Call<PostPutDelKontak> postKontakCall = mApiInterface.postKontak(edtNama.getText().toString(), edtNomor.getText().toString());
postKontakCall.enqueue(new Callback<PostPutDelKontak>() {
@Override
public void onResponse(Call<PostPutDelKontak> call, Response<PostPutDelKontak> response) {
MainActivity.ma.refresh();
finish();
}
@Override
public void onFailure(Call<PostPutDelKontak> call, Throwable t) {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}
});
}
});
btBack = (Button) findViewById(R.id.btBackGo);
btBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.ma.refresh();
finish();
}
});
}
}
EditActivity
EditActivity terdiri dari layout EditActivity.xml pada package res/layout dan EditActivity.java pada package java/kontak.
EditActivity.xml
Pada layout EditActivity.xml terdapat EditText untuk id, nama, dan nomor serta Button untuk Tombol update, delete, dan back.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_edit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.root.kontak.EditActivity">
<TextView
android:id="@+id/tvId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Id Kontak : "
android:textSize="20sp"/>
<TextView
android:id="@+id/tvNama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama : "
android:layout_below="@id/tvId"
android:textSize="20sp"/>
<TextView
android:id="@+id/tvNomor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nomor : "
android:layout_below="@id/tvNama"
android:textSize="20sp"/>
<EditText
android:id="@+id/edtId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Id"
android:layout_toRightOf="@+id/tvId"
android:layout_alignBaseline="@+id/tvId"/>
<EditText
android:id="@+id/edtNama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Nama"
android:layout_alignBaseline="@+id/tvNama"
android:layout_alignLeft="@+id/edtId"/>
<EditText
android:id="@+id/edtNomor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Nomor"
android:layout_alignBaseline="@+id/tvNomor"
android:layout_alignLeft="@+id/edtId"
android:inputType="date"/>
<LinearLayout
android:id="@+id/Linearlayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/tvNomor"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<Button
android:id="@+id/btUpdate2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update"/>
<Button
android:id="@+id/btDelete2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"/>
<Button
android:id="@+id/btBackGo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"/>
</LinearLayout>
</RelativeLayout>
EditActivity.java
package com.example.root.kontak;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.root.kontak.Model.PostPutDelKontak;
import com.example.root.kontak.Rest.ApiClient;
import com.example.root.kontak.Rest.ApiInterface;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class EditActivity extends AppCompatActivity {
EditText edtId, edtNama, edtNomor;
Button btUpdate, btDelete, btBack;
ApiInterface mApiInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
edtId = (EditText) findViewById(R.id.edtId);
edtNama = (EditText) findViewById(R.id.edtNama);
edtNomor = (EditText) findViewById(R.id.edtNomor);
Intent mIntent = getIntent();
edtId.setText(mIntent.getStringExtra("Id"));
edtId.setTag(edtId.getKeyListener());
edtId.setKeyListener(null);
edtNama.setText(mIntent.getStringExtra("Nama"));
edtNomor.setText(mIntent.getStringExtra("Nomor"));
mApiInterface = ApiClient.getClient().create(ApiInterface.class);
btUpdate = (Button) findViewById(R.id.btUpdate2);
btUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Call<PostPutDelKontak> updateKontakCall = mApiInterface.putKontak(
edtId.getText().toString(),
edtNama.getText().toString(),
edtNomor.getText().toString());
updateKontakCall.enqueue(new Callback<PostPutDelKontak>() {
@Override
public void onResponse(Call<PostPutDelKontak> call, Response<PostPutDelKontak> response) {
MainActivity.ma.refresh();
finish();
}
@Override
public void onFailure(Call<PostPutDelKontak> call, Throwable t) {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}
});
}
});
btDelete = (Button) findViewById(R.id.btDelete2);
btDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (edtId.getText().toString().trim().isEmpty()==false){
Call<PostPutDelKontak> deleteKontak = mApiInterface.deleteKontak(edtId.getText().toString());
deleteKontak.enqueue(new Callback<PostPutDelKontak>() {
@Override
public void onResponse(Call<PostPutDelKontak> call, Response<PostPutDelKontak> response) {
MainActivity.ma.refresh();
finish();
}
@Override
public void onFailure(Call<PostPutDelKontak> call, Throwable t) {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}
});
}else{
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}
}
});
btBack = (Button) findViewById(R.id.btBackGo);
btBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.ma.refresh();
finish();
}
});
}
}
Setelah semua activity dan model telah selesai dibuat, compile aplikasi tersebut ke dalam smartphone android yang telah terhubung dalam satu jaringan dengan komputer yang menyediakan Rest server yang sebelumnya telah dibuat.
0
0
0
share