Wednesday, August 31, 2016

Dibudak Dunia

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

Tidak ada satupun manusia yang bersedia untuk disebut budak dunia. Tidak ada satupun di antara kita yang merasa bangga disebut pecinta harta. Itu artinya kita sepakat status budak dunia atau pecinta harta adalah label yang buruk bagi kita. Sehingga kita mengupayakan pembelaan diri ketika ada orang yang menyebut kita dengan label itu. Akan tetapi tidak salah ketika Anda merenungkan beberapa karakter orang yang itu merupakan ciri pecinta dunia. Barangkali salah satu dari sekian karakter itu ada pada diri Anda.


Anda selalu berpikir setiap waktu bagaimana caranya agar harta Anda semakin bertambah. Anda merasa sangat bahagia ketika Anda berhasil menggapai cita-cita dunia. Anda sangat ambisi dalam mengejar karir Anda. Anda rasa sangat tertantang ketika ada teman atau tetangga yang lebih sukses secara materi.

Anda selalu membayangkan bagaimana rasanya jadi orang kaya atau lebih kaya. Anda merasa tertekan manakala Anda gagal meraih apa yang Anda inginkan. Anda merasa sangat sedih dan menyesal ketika ada salah satu harta Anda yang hilang. Anda merencanakan kehidupan hingga terlalu jauh ke depan. Anda lebih pusing memikirkan perasaan daripada memikirkan tumpukan dosa yang terus bertambah. Anda tidak merasa bersalah melakukan dosa kecil. bahkan Anda ingin anak Anda sukses dari sisi materi dan dunia dan bisa menjadi sumber penghasilan bagi Anda di usia tua. Anda juga menilai orang lain berdasarkan status sosial dan dunianya, dalam masalah ibadah Anda tidak bersiap siap saat waktu sholat akan tiba.

Anda melalui hari ini tanpa sedikitpun membuka lembaran Al Quran karena Anda terlalu sibuk. kajian Islam bagi Anda hanya aktivitas pengisi waktu luang di tengah kesibukan karier Anda. Anda selalu ingin menjadi pusat perhatian banyak orang, anda sangat perhatian dengan omongan orang lain tentang diri Anda. Anda terlalu sibuk memikirkan Bagaimana bisa memiliki tubuh yang ideal. Anda lebih khusuk ketika berdoa meminta dunia daripada berdoa meminta surga. Anda jejali doa Anda untuk meminta kesejahteraan dunia daripada kesejahteraan akhirat. Anda lalui hari ini tanpa sedikit pun memikirkan kematian. Karena  emang dunia ujian bagi kita. Nabi bersabda ini likulli ummatin fitnah fitnah mati Alma setiap umat memiliki ujian dan ujian bagi umatku adalah harta

Maka dari pada itu ingatlah firman Allah pada surah Al Hadid ayat 20

اعْلَمُوا أَنَّمَا الْحَيَاةُ الدُّنْيَا لَعِبٌ وَلَهْوٌ وَزِينَةٌ وَتَفَاخُرٌ بَيْنَكُمْ وَتَكَاثُرٌ فِي الْأَمْوَالِ وَالْأَوْلاَدِ كَمَثَلِ غَيْثٍ أَعْجَبَ الْكُفَّارَ نَبَاتُهُ ثُمَّ يَهِيجُ فَتَرَاهُ مُصْفَرًّا ثُمَّ يَكُونُ حُطَامًا وَفِي الْآخِرَةِ عَذَابٌ شَدِيدٌ وَمَغْفِرَةٌ مِّنَ اللَّهِ وَرِضْوَانٌ وَمَا الْحَيَاةُ الدُّنْيَا إِلاَّ مَتَاعُ الْغُرُور

Artinya : Ketahuilah, bahwa sesungguhnya kehidupan dunia ini hanyalah permainan dan suatu yang melalaikan, perhiasan dan bermegah-megah antara kamu serta berbangga-banggaan tentang banyaknya harta dan anak, seperti hujan yang tanam-tanamannya mengagumkan para petani; kemudian tanaman itu menjadi kering dan kamu lihat warnanya kuning kemudian menjadi hancur. Dan di akhirat (nanti) ada azab yang keras dan ampunan dari Allah serta keridhaan-Nya. Dan kehidupan dunia ini tidak lain hanyalah kesenangan yang menipu.


Sekian artikel tentang Dibudak Dunia, semoga menjadi peringatan bagi kita dan pengingat bagi kita.


Android Pull/Swipe to Refresh RecyclerView

Hai sobat, pada artikel sebelumnya yang berjudul Mengirim JSON Object ke Activity lain Menggunakan Intent, telah ditunjukkan bagaimana cara untuk menngirim json objek ke lain activity menggunakan intent putExtra. Dan untuk artikel kali ini, akan ditunjukkan cara membuat refresh pull down, di mana nantinya akan muncul jika kita menscroll ke bawah dan data akan muncul atau diperbarui.



SwipeRefreshLayout adalah widget yang telah disupport di dalam library android seupport v4. Widget ini mungkin telah menjadi standar untuk membuat fungsi refresh pada Android. Dengan adanya widget ini, opengguna akan dimudahkan unutk merefresh sebuah data dalam aplikasi android dengan menggulir atau menscroll ke bawah tanpa harum menekan tombol refresh.

Penggunaannya dengan memasangnya menjadi parent pada layout android, sehingga nantinya akan merefresh child view yang ada di dalamnya. Unutk tutorial ini saya menggunakan aplikasi pada artikle sebelumnya yang berjudul Tutorial Android dengan Retrofit HTTP Library. Widget SwipeRefreshLayout akan saya pasang pada MainActivity untuk menyegarkan halaman utama aplikasi. Lebih jelasnya bisa sobat ikuti langkah-lnagkah berikut ini

Pertama sobat buka project aplikasi sebelumnya, lalu buka activity_main.xml dan tambahkan widget SwipeRefreshLayout seperti berikut ini


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.blogsetyaaji.retrofithttplibrary.MainActivity">

<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipeRefresh">

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/movie_recycler"/>

</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>


Setelah menambahkan widget pada layout, selanjutnya sobat tambahkan kode perintah SwipeResfreshLayout di dalam method onCreate di MainActivity.java seperti berikut ini


/*menambah warna pada SwipeRefreshLayout*/
final SwipeRefreshLayout dorefresh = (SwipeRefreshLayout)findViewById(R.id.swipeRefresh);
dorefresh.setColorSchemeResources(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light);

/*event ketika widget dijalankan*/
dorefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener(){
@Override
public void onRefresh() {
refreshItem();
}

void refreshItem() {
tampilData();
onItemLoad();
}

void onItemLoad() {
dorefresh.setRefreshing(false);
}

});


Maka kode lengkap dalam MainActivity.java akan nampak seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary;

import android.content.Context;
import android.content.Intent;
import android.support.v4.widget.SwipeRefreshLayout;
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.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

import com.blogsetyaaji.retrofithttplibrary.Adapter.MoviesAdapter;
import com.blogsetyaaji.retrofithttplibrary.Model.Movie;
import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiClient;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiInterface;

import java.util.List;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = MainActivity.class.getSimpleName();

// TODO - insert your themoviedb.org API KEY here
private final static String API_KEY = "e5013e88aad0bad4821bdac93d1d6a30";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (API_KEY.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please obtain your API KEY first from themoviedb.org", Toast.LENGTH_LONG).show();
return;
}


tampilData();

/*menambah warna pada SwipeRefreshLayout*/
final SwipeRefreshLayout dorefresh = (SwipeRefreshLayout)findViewById(R.id.swipeRefresh);
dorefresh.setColorSchemeResources(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light);

/*event ketika widget dijalankan*/
dorefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener(){
@Override
public void onRefresh() {
refreshItem();
}

void refreshItem() {
tampilData();
onItemLoad();
}

void onItemLoad() {
dorefresh.setRefreshing(false);
}

});

}

private void tampilData() {
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.movie_recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);

Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {
final List<Movie> movies = response.body().getResults();
Log.d(TAG, "Number of movies received: " + movies.size());
Toast.makeText(MainActivity.this, "Number of movies received: " + movies.size(), Toast.LENGTH_LONG).show();
recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.list_item_movie, getApplicationContext()));

/*perintah klik recyclerview*/
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {

public boolean onSingleTapUp(MotionEvent e){
return true;
}
});

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && gestureDetector.onTouchEvent(e)){
int position = rv.getChildAdapterPosition(child);
Toast.makeText(getApplicationContext(), "Id : " + movies.get(position).getId() + " selected", Toast.LENGTH_SHORT).show();

Intent i = new Intent(MainActivity.this, DetailActivity.class);
i.putExtra("title", movies.get(position).getTitle());
i.putExtra("date", movies.get(position).getReleaseDate());
i.putExtra("vote", movies.get(position).getVoteAverage().toString());
i.putExtra("overview", movies.get(position).getOverview());
i.putExtra("bg", movies.get(position).getPosterPath());
MainActivity.this.startActivity(i);

}
return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}
});
}

@Override
public void onFailure(Call<MovieResponse>call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
}


Dalam kode tersebut, widget SwipeRefreshLayot dapat diberi lebih dari satu warna sesuai keinginan kita agar tampilnaya lebih menarik atau warnanya akan berubah-ubah ketika refresh berjalan. Setelah itu di dalam kode tersebut, fungsi untuk menampilkan data dimasukkan di dalam event SwipeRefreshLayout setOnRefreshListener, sehingga jika widget di jalankan, fungsi menampilkan data akan dijalankan. Untuk tampilanya akan jadi seperti gembar di bawah ini



SIlahkan jika sobat ingin melihat hasil projectnya di github saya

Follow @AjiSetya Watch Star

Sangat mudah sekali menambahkan widget SwipeRefreshLayout di dalma aplikasi android. Dan sekian artikle dari saya tentang menambahkan widget SwipeRefreshLayout di android, semoga bermanfaat dan membantu.



Jangan Mau Ditipu Dunia

Saat manusia hidup di dunia ini, banyak yang melakukan pekerjaan tanpa mengingat kewajiban yang ditanggungnya. Hanya untuk memenuhi keinginan yang semu dan sementara, manusia sampai meninggalkan kewajibanya kepada Allah dan melalaikan apa yang diperintahkan kepadanya. Padahal mementingkan kehidupan di dunia ketimbang kehidupan di akhirat bisa berakibat buruk, baik di dunia maupun di akhirat. Dan jika seseorang telah lalai dalam kewajibanya terhadap Allah, maka dia termasuk golongan yang telah ditipu oleh dunia


Orang yang ditipu dunia adalah satu gara-gara dunia dia lalai dari berdzikir kepada Allah. dua gara-gara perniagaan jual beli dia lalai mendirikan shalat. dan kita tahu arti mendirikan bukan hanya sekedar mengerjakan. yang ketiga gara-gara sibuk dengan dunia harta kemilaunya perhiasan maka dia tidak mau membayar zakat. Allah subhanahu wa ta'ala berfirman di dalam surat an-nur ayat 37

رِجالٌ لا تُلْهيهِمْ تِجارَةٌ وَلا بَيْعٌ عَنْ ذِكْرِ اللهِ وَ إِقامِ الصَّلاةِ وَ إيتاءِ الزَّكاةِ يَخافُونَ يَوْماً تَتَقَلَّبُ فيهِ الْقُلُوبُ وَ الْأَبْص

"Yaitu orang laki-laki yang tidak dapat dilalaikan oleh perniagaan dan jual-beli karena mengingat Allah dan mendirikan sembah­yang dan mengeluarkan zakat. Dan mereka takut akan hari yang gedebak-gedebur padanya se­gala hati dan segala pandangan."

Orang-orang yang perniagaan dan jual-beli mereka tidak melalaikan mereka dari berdzikir kepada Allah mendirikan shalat membayar zakat Mereka takut suatu hari yang hari tersebut hati-hati dan penglihatan akan berbuat balik saking gentingnya dan dahsyatnya hari kiamat. 

Bagaimana cara agar tidak ditipu dunia? Cara agar tidak ditipu dunia adalah ingat selalu apa yang ada di sisi Allah lebih besar daripada dunia yang kita kejar, dunia yang kita cari-cari, dunia yang kadang-kadang kita menghalalkan segala cara untuk mendapatkan menipu, mencuri, berjudi, cara melakukan kezaliman, kemudian makan harta riba. Maka kapan orang tertipu dunia, kapan seseorang menghalalkan segala cara untuk menggaris dunia, maka obatnya adalah ingat bahwa yang di sisi Allah lebih besar, yang di sisi Allah nikmat pahala kenikmatan apa saja yang ada di surga lebih besar daripada hanya dunia. apa Dalil yang menunjukkan akan hal ini dihatsu Al Anfal ayat 28 Allah berfirman 

وَاعْلَمُوا أَنَّمَا أَمْوَالُكُمْ وَأَوْلَادُكُمْ فِتْنَةٌ وَأَنَّ اللَّهَ عِنْدَهُ أَجْرٌ عَظِيمٌ

"Dan ketahuilah, bahwa hartamu dan anak-anakmu itu hanyalah sebagai cobaan dan sesungguhnya di sisi Allah-lah pahala yang besar."

Ketahuilah bahwasanya harta dan anak-anak kalian adalah ujian. Kapan kita teruji dengan harta akhirnya melalaikan shalat, tidak berdzikir, tidak bayar zakat, lupa akhirat. Maka ketahuilah di sisi Allah ganjaran yang besar, dan Allah ulangi ayat ini di dalam beberapa surat yang lain dalam surat Taubah ayat 22

خَالِدِينَ فِيهَا أَبَدًا ۚإِنَّ اللَّهَ عِنْدَهُ أَجْرٌ عَظِيمٌ

"Mereka kekal di dalamnya selama-lamanya. Sesungguhnya di sisi Allahlah pahala yang besar."

begitu juga dalam surat Taghabun ayat 15 Allah subhanahu wa ta'ala berfirman

إِنَّمَا أَمْوَالُكُمْ وَأَوْلَادُكُمْ فِتْنَةٌ ۚوَالَّهُ عِنْدَهُ أَجْرٌ عَظِيمٌ

"Sesungguhnya hartamu dan anak-anakmu hanyalah cobaan (bagimu): di sisi Allah-lah pahala yang besar"

Isteri dan anak kadang menjadi sebab yang melalaikan seseorang dari mengingat Allah, dan kadang menjadi pendorong ke arah meninggalkan tanggung jawab keimanan. Manusia melakukan tersebut karena biasanya menghindari kesusahan yang mungkin menimpa anak dan isterinya.

Seorang mukmin mungkin mampu menanggung kesusahan dirinya sendiri tetapi dia tidak sanggup melihat anak isterinya menanggung kesusahan. Inilah yang menyebabkannya menjadi bakhil dan pengecut supaya anak-anak dan isterinya aman dan tenang, supaya mereka hidup senang dan cukup dengan harta benda. Anak dan istri menjadi musuhnya karena merekalah yang menjadi batu penghalang, yang menahannya dari kebaikan dan dari merealisasikan kewujudan insaniyahnya yang tinggi. Mereka juga mungkin menghalanginya dalam menunaikan suatu kewajiban dakwah, karena menghindari kesulitan yang akan menimpa anak dan istrinya, atau karana mereka tidak sejalan dengannya, sedangkan dia tidak berdaya untuk berpisah dan membulatkan tekadanya kepada Allah.

Untuk itu, jangan sampai seorang mukmin sampai lalai dan meninggalkan kewajibanya seperti sholat dan zakat. Karena kehidupan didunia ini hanyalah sementara, sedangkan kehidupan di akhirat adalah kehiduan yang kekal.



Sekian artikel tentang ditipu dunia, semoga bermanfaat dan bisa menjadi pengingat kita terhadap kewajiban kepada Allah.


Tuesday, August 30, 2016

Mengirim JSONObject ke Activity Lain Mengunakan Intent

Hai sobat, pada artikel kemarin yang berjudul Mengatur RecyclerView ItemClick Listener, telah ditunjukkan cara memberikan perintah click listener yang sebenarnya tidak ada pada bjek RecyclerView. Dan di artikle kali ini akan dijelaskan cara mengirimkan JSONObjek ke activity lain menggunakan intent..



Mungkin pada artikel sebelumnya saya telah menulis artikel tutorial android yang sebenarnya di dalamnya terdapat fungsi mengirim objek dari activity lain menggunakan intent. Tapi jika objek yang inigin kita kirim adalah objek dari JSON? Mudah saja, dengan menggunakan intent putextra, kita bisa mengirimkannya ke activity yang kita mau.

Penggunaanya hampir sama dengan intent putextra lainya, hanya saja objek yang akan kita kirim kita panggil terlebih dahulu pada activity sebelumnya dan selanjutnya tinggal kita ambil saat activity berpindah. Untuk lebh jelasnya sobat bisa lihat langkah-langkah di bawah ini

Baca juga "Cara Memasang Musik di Blog"

Pada arikel kemarin kita telah menambahkan perintah saat RecyclerView diklik, dan sekarang kita akan melanjutkanya agar lebih mudah. Silahkan sobat buka link berikut jika belum membuat project pada artikel sebelumnya. (Tutorial Android dengan Retrofit HTTP Library)

Nah untuk membuatnya, pertama buka project RetrofitHTTPLybrary, setelah itu tambahkan activity baru dengan nama DetailActivity

Buka MainActivity.java, masukkan kode berikut ini di dalam perintah onItemTouchListener


Intent i = new Intent(MainActivity.this, DetailActivity.class);
i.putExtra("title", movies.get(position).getTitle());
i.putExtra("date", movies.get(position).getReleaseDate());
i.putExtra("vote", movies.get(position).getVoteAverage().toString());
i.putExtra("overview", movies.get(position).getOverview());
i.putExtra("bg", movies.get(position).getPosterPath());
MainActivity.this.startActivity(i);


Keseluruhan dari MainActivity akan nampak seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary;

import android.content.Context;
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.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

import com.blogsetyaaji.retrofithttplibrary.Adapter.MoviesAdapter;
import com.blogsetyaaji.retrofithttplibrary.Model.Movie;
import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiClient;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiInterface;

import java.util.List;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = MainActivity.class.getSimpleName();

// TODO - insert your themoviedb.org API KEY here
private final static String API_KEY = "e5013e88aad0bad4821bdac93d1d6a30";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (API_KEY.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please obtain your API KEY first from themoviedb.org", Toast.LENGTH_LONG).show();
return;
}

final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.movie_recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);

Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {
final List<Movie> movies = response.body().getResults();
Log.d(TAG, "Number of movies received: " + movies.size());
Toast.makeText(MainActivity.this, "Number of movies received: " + movies.size(), Toast.LENGTH_LONG).show();
recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.list_item_movie, getApplicationContext()));

/*perintah klik recyclerview*/
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {

public boolean onSingleTapUp(MotionEvent e){
return true;
}
});

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && gestureDetector.onTouchEvent(e)){
int position = rv.getChildAdapterPosition(child);
Toast.makeText(getApplicationContext(), "Id : " + movies.get(position).getId() + " selected", Toast.LENGTH_SHORT).show();

Intent i = new Intent(MainActivity.this, DetailActivity.class);
i.putExtra("title", movies.get(position).getTitle());
i.putExtra("date", movies.get(position).getReleaseDate());
i.putExtra("vote", movies.get(position).getVoteAverage().toString());
i.putExtra("overview", movies.get(position).getOverview());
i.putExtra("bg", movies.get(position).getPosterPath());
MainActivity.this.startActivity(i);

}
return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}
});
}

@Override
public void onFailure(Call<MovieResponse>call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});

}
}
 

Di dalam kode MainActivity tersebut, terdapat kode Intent dimana dia mengirimkan objek JSON dengan memanggil variablenya. Selanjutnya kita buat tampilan pada activity detail, di dalamnya kita akan menampilkan data lebih di dalamnya seperti gambar, judul, deskripsi dll. untuk membuatnya, pada activity_detail.xml, atur layoutnya seperti berikut ini


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.blogsetyaaji.retrofithttplibrary.DetailActivity">

<LinearLayout
android:id="@+id/lay1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ImageView
android:id="@+id/bg"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_gravity="center_horizontal"
android:background="#000" />

<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp">

<LinearLayout
android:id="@+id/lay2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textSize="24sp"
android:textStyle="bold" />

<TextView
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID"
android:textSize="18sp" />

</LinearLayout>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:orientation="horizontal">

<ImageView
android:id="@+id/rating_image"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_centerInParent="true"
android:scaleType="centerCrop"
android:src="@drawable/star"
android:tint="@color/colorAccent" />


<TextView
android:id="@+id/txtrating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="5.0"
android:textSize="20sp" />

</LinearLayout>

<TextView
android:id="@+id/txtDescrip"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@id/lay2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:layout_marginTop="10dp"
android:text="Description" />

</RelativeLayout>
</android.support.v7.widget.CardView>



</LinearLayout>

</ScrollView>
 

Jika sudah, selanjutnya berpindah ke DetailActivity.java dan buat kodenya seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import org.w3c.dom.Text;

public class DetailActivity extends AppCompatActivity {

public TextView txtTitle, txtoverview, txtdate, txtvote;
public ImageView bg;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);

txtTitle = (TextView) findViewById(R.id.txtTitle);
txtTitle.setText(getIntent().getStringExtra("title"));

txtdate = (TextView) findViewById(R.id.txtDate);
txtdate.setText(getIntent().getStringExtra("date"));

txtoverview = (TextView) findViewById(R.id.txtDescrip);
txtoverview.setText(getIntent().getStringExtra("overview"));

txtvote = (TextView) findViewById(R.id.txtrating);
txtvote.setText(getIntent().getStringExtra("vote"));

bg = (ImageView) findViewById(R.id.bg);
Picasso.with(this)
.load("https://image.tmdb.org/t/p/w300_and_h450_bestv2" + getIntent().getStringExtra("bg"))
.resize(200, 300)
.into(bg);
}
}
 

Pada kode di atas, DetaiActivity akan menerima kiriman dari activity sebelumnya  dengan kode getStringExtra lalu berubah objek pada activity Detai sesuai dengan nilai variable pada Json.

Untuk membuat agar tampilanya lebih bagus dan kegunaanya makin bagus, kita tambahkan tombol kembali di sebelah kiri pojok. Caranya sangat mudah sekali, hanya dengan membuka AndroidManifest.xml dan tambahkan kode parent di dalam tag application seperti berikut ini


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blogsetyaaji.retrofithttplibrary">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailActivity"
android:parentActivityName=".MainActivity"></activity>
</application>

</manifest>


Jika sudah, jalankan aplikasinya dengan memilih menu Run 'app', mkaa tampilanya akan seperti berikut ini



Dan itu lha cara mengirim objek JSON ke activity lain.
Sekian artikel tentang Mengirim JSONObject ke Activity Lain Mengunakan Intent, semoga bermanfaat.



HIdup Sehat dengan Islam

Banyak orang mencari kesehatan, bahkan kalau di dunia barat bagi mereka kesehatan itu segala-galanya. Makanan serba steril begitu juga pakaian dan yang lainnya. Mereka sangat memperhatikan sekali masalah kesehatan. Akan tetapi kalau kita perhatikan, Islam lah yang paling memperhatikan kesehatan. Siapa saja yang mempelajari sunnah nabi, dia akan dapatkan bahwa asal ataupun kaidah-kaidah kesehatan itu sudah diajarkan oleh nabi. Bagaimana Rasulullah dalam mempraktekkan kesehatan dalam kehidupan sehari-hari dalam tata cara makanya.


Allah berfirman “Makanlah dan minumlah dan jangankah berlebihan” ayat ini berbicara tentang ilmu kesehatan secara keseluruhan. makan dan minumlah jangan berlebihan, dan Nabi Shallallahu Alaihi Wasallam juga menjelaskan, tidak lah anak Adam memenuhi bejana yang lebih buruk melebihi perutnya, cukuplah bagi anak Adam untuk  menegakkan tulang punggungnya. tapi kalau dia ternyata harus makan juga, dibuat sepertiga untuk makannya, sepertiga untuk minumnya, seperti untuk nafasnya. Siapa saja yang mempelajari hadits ini kita dapati, cara makan yang sehat yang diajarkan oleh Nabi Shallallahu Alaihi Wasallam. Salah satu penyebab utama munculnya penyakit adalah dari makanan, di mana lambung ketika melebihi kapasitasnya dan selalu diisi dan isi akibatnya lambung itu akan rusak. Ketika lambung rusak, limpa juga akan rusak Dan cara tidur Nabi memberikan tata cara tidur yang sehat. Nabi selalu tidur ketika di awal waktu malam, waktu awal sangat dianjurkan untuk tidur karena apabila seseorang tidur larut ,malam itu akan mempengaruhi pekerjaan organ-organ tubuh terutama jantung, demikian pula hatinya. Sehingga orang yang senantiasa tidur kemalaman pasti akan menimbulkan berbagai macam penyakit. Sabda Rasulullah, aku tidak suka tidur sebelum isya dan Allah aku tidak suka untuk berbincang-bincang setelah sholat Isya. Makanya Rasul menganjurkan umatnya untuk tidur di awal malam. Selainitu tata cara Nabi tidur adalah cara yang paling aman dan sehat, beliau selalu tidur diatas rusuk yang kanan karena kalau kita tidur di atas rusuk yang kiri, maka itu akan memperberat kerja jantung kita. makan bisa jadi makanan yang ada dalam lambung bisa tumpah ke jantung sehingga bisa merusak pekerjaan jantung itu sendiri. Itulah alasan Rasul tidur di rusuk yang kanan. Semua dokter berkata bahwa tidur yang paling sehat adalah tidur diatas rusuk yang kanan.

Subhanallah ketika ketika menyebutkan tentang pokok-pokok kesehatan, beliau  berkata bahwa ketahuilah pokok kesehatan di dalam tubuh manusia ada tiga pada tiga poros dan itu ditunjukkan oleh Alquran dan Hadas. Yang pertama adalah menjaga stamina, kedua tidak mengkonsumsi makanan-makanan yang bisa merusak tubuh, yang ke tiga  berusaha untuk mengeluarkan dari tubuh kita unsur-unsur yang bisa merusak. Adapun yang perlu menjaga stamina maka itu ditetapkan oleh Al-Qur'an dan Hadist bahwa orang yang sakit diperbolehkan ia tidak berpuasa untuk menjaga staminanya sehingga tidak semakin lemah ketika menghadapi penyakit. Adapun yang kedua tidak mengkonsumsi sesuatu yang bisa merusak tubuh . Allah mengharamkan arak dan mengharamkan semua yang bisa berbahaya untuk tubuh, mengkonsumsi racun. Allah telah meletakkan kaidah, apabila ada sesuatu yang lebih besar daripada manfaatnya maka lebih dikedepankan bahayanya dan tinggalkan itu.

Allah berfiran Mereka bertanya kepadamu tentang arak dan judi, katakan padanya ada dosa besar tapi ada manfaat-manfaat untuk manusia ,tapi jika dosa dan bahaya yang lebih besar daripada manfaatnya, maka Allah haramkan arak karena itu mudaratnya lebih besar.Jangan mengkonsumsi sesuatu yang bisa merusak tubuh kita. Kadang kita  tidak peduli Apakah makanan yang kita masukkan ke mulut kita itu berbahaya atau tidak, apalagi di zaman sekarang makanan banyak tercampur dengan sesuatu yang terkadang itu bisa merusak tubuh otak dan yang lainnya bahkan ada sebagian makanan seperti ikan-ikan yang dipoles dengan namanya zat-zat untuk mayat ,kemudian yang kaidah yang ketiga yaitu mengeluarkan unsur yang rusak dari tubuh, Nabi berbekam mengeluarkan darah yang panas dari tubuh kita karena itu bisa merusak tubuh,

Nabi  juga mempraktekkan tips supaya muntah, muntah sangat dianjurkan sebagaimana dikatakan oleh para tabib muntah sebulan dua kali itu sangat menjaga kesehatan . menghindari penyakit kusta dan yang lainnya. Muntah mengeluarkan makanya yang bersifat merusak. ternyata kaidah kesehatan, ini sudah diajarkan oleh nabi kita. Cobalah kita lihat bagaimana kehidupan Nabi SAW dalam masalah hubungan badan ,maka Rsulullah mengajarkan kepada kita supaya tidak berlebihan tapi juga tidak kurang karena berlebihan coitus itu akan menyebabkan penyakit, kurang pun juga akan memberi menyebabkan penyakit.


Demikian pula ,penyakit penyakit hati itu bisa berpengaruh kepada badan, makanya rasul menyuruh kita bersabar tawakal jangan marah jangan banyak tertawa itu semua karena bisa merusak anggota tubuh kita organ tubuh kita. Jauhi oleh kamu banyak tertawa karena itu bisa mematikan hati ternyata benar, orang yang banyak tertawa bisa mengeraskan jantungnya sehingga berakibat akan merusak, kebanyakan marah itu akan bisa merusak organ hati, demikian pula kebanyakan bersedih bisa merusak organ limpa. Maka Islam datang untuk ada ketika  kita dalam kesedihan, kita serahkan kepada Allah sehingga kita tidak perlu bersedih kita tawakal kepada Allah sehingga kita tidak stres dalam hidup kita. Kita disuruh untuk selalu berdzikir agar selalu di hati kita tenang .Semua itu untuk menjaga keseimbangan tubuh .Tapi tentu ingat tujuan itu semua yang paling utama, yang paling utama adalah kehidupan akhirat bukan kehidupan dunia sunnah nabi memang seha, siapapun yang mempelajari sunnah nabi, pasti sehat  Hidupkan dari pelajarilah sunnah nabi karena itu sangat bermanfaat..

Sekian artikel tentang HIdup Sehat dengan Islam, semoga bermanfaat dan bisa menjadi pelajaran untuk kita bagaimana menjalani hidup sehat dengan Islam.

Sunday, August 28, 2016

RecyclerView Ketika Diklik dengan Item Click Listener

Hai sobat, kembali lagi bersama saya di artikel tutorial android. Pada artikel sebelumnya yang berjudul Tutorial Android dengan Retrofit HTTP Library, telah dijelaskan tentang cara mendapatkan informasi dari sebuah web dengan menggunakan Retrofit. Selain itu juga terdapat cara menampilkan gambar menggunakan library picasso. Dan pada artikel kali ini, akan ditunjukkan cara menambahkan perintah listener pada RecyclerView.

Pada objek RecyclerView tidak terdapat perintah onItemClickListener seperti yang dimiliki oleh ListView. Untuk menangani perintah klik di RecyclerView, bisa menggunakan interface RecyclerView.OnItemTouchListener(). Untuk perintah klik dapat ditangani dalam onInterceptTouchEvent() dan mengunakan GestureDetector untuk mendeteksi ketukan. Sedangkan untuk mendapatkan posisi item saat diklik, dengan mengunakan method getChildAdapterPosition() dalam objek RecyclerView. dan tampilan item yang diklik bisa diperoleh dari metode findChildViewUnder().

Untuk lebih jelasnya, kita coba membuatnya dalam project Retrofit pada artikel sebelumnya yaitu Tutorial Android dengan Retrofit HTTP Library.

Buka project yang sudah dibuat, lalu buka MainActivity.java dan sisipkan kode berikut di dalam method onResponse


/*perintah klik recyclerview*/
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {

public boolean onSingleTapUp(MotionEvent e){
return true;
}
});

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && gestureDetector.onTouchEvent(e)){
int position = rv.getChildAdapterPosition(child);
/*Intent i = new Intent(getApplicationContext(), DetailActivity.class);
i.putExtra("id", movies.get(position).getId());
getApplicationContext().startActivity(i);*/
Toast.makeText(getApplicationContext(), "Id : " + movies.get(position).getId() + " selected", Toast.LENGTH_SHORT).show();
}
return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}
});


Maka keseluruhan kodenya akan seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary;

import android.content.Context;
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.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

import com.blogsetyaaji.retrofithttplibrary.Adapter.MoviesAdapter;
import com.blogsetyaaji.retrofithttplibrary.Model.Movie;
import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiClient;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiInterface;

import java.util.List;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = MainActivity.class.getSimpleName();

// TODO - insert your themoviedb.org API KEY here
private final static String API_KEY = "e5013e88aad0bad4821bdac93d1d6a30";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (API_KEY.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please obtain your API KEY first from themoviedb.org", Toast.LENGTH_LONG).show();
return;
}

final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.movie_recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);

Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {
final List<Movie> movies = response.body().getResults();
Log.d(TAG, "Number of movies received: " + movies.size());
Toast.makeText(MainActivity.this, "Number of movies received: " + movies.size(), Toast.LENGTH_LONG).show();
recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.list_item_movie, getApplicationContext()));

/*perintah klik recyclerview*/
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {

public boolean onSingleTapUp(MotionEvent e){
return true;
}
});

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && gestureDetector.onTouchEvent(e)){
int position = rv.getChildAdapterPosition(child);
/*Intent i = new Intent(getApplicationContext(), DetailActivity.class);
i.putExtra("id", movies.get(position).getId());
getApplicationContext().startActivity(i);*/
Toast.makeText(getApplicationContext(), "Id : " + movies.get(position).getId() + " selected", Toast.LENGTH_SHORT).show();
}
return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}
});
}

@Override
public void onFailure(Call<MovieResponse>call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});

}
}



Jalankan program dengan memilih menu Run 'app'. Dan hasilnya adalah jika salah satu item diklik, maka akan muncul toast yang berisi id film.



SIlahkan jika sobat ingin melihat hasil projectnya di github saya

Follow @AjiSetya Watch Star


Saturday, August 27, 2016

Tips Mendapatkan Ketenangan Hati

Banyak orang yang ingin sekali mendapatkan ketenangan hati, entah karena terlalu banyak masalah yang dihadapi, atau pun tidak tahu apa yang sedang ia rasakan. Untuk menemukan ketanangan hati, mungkin orang mau melakukan segala cara. Tapi bagaimana untuk mendapatkan ketenagan hati yang sesungguhnya?



Sebagian orang bahkan mungkin banyak mencari kedamaian hati, ketenangan jiwa, dengan cara pergi ke tempat-tempat yang jauh dari orang banyak, ke tempat-tempat yang dianggap bisa menenangkan hati dan pikiran dia. Ketahuilah bahwasanya di dalam Islam Allah Subhanahu Wa Ta'ala telah memberikan tips agar hati kita tenang. Allah subhanahu wa ta'ala berfirman di dalam surat ar-ra'd ayat 28

الَّذِينَ آمَنُوا وَتَطْمَئِنُّ قُلُوبُهُمْ بِذِكْرِ اللَّهِ ۗأَلَا بِذِكْرِ اللَّهِ تَطْمَئِنُّ الْقُلُوبُ

"(yaitu) orang-orang yang beriman dan hati mereka menjadi tenteram dengan mengingat Allah. Ingatlah, hanya dengan mengingati Allah-lah hati menjadi tenteram."

artinya orang-orang yang beriman, dan hati-hati mereka tenang dengan berzikir kepada Allah Subhanahu Wa Ta'ala. Ingatlah bahwasanya dengan berzikir hati-hati akan tenang.


Ini tips Quran untuk menggapai kedamaian jiwa, tips Quran untuk menggapai ketenangan hati. Berdzikir kepada Allah bisa menenangkan hati, mendamaikan jiwa dengan benar-benar tenang bukan ketenangan yang semu, bukan kedamaian yang hanya fatamorgana, benar-benar tenang. Di sini terdapat rahasia menarik, kenapa berdzikir kepada Allah mampu dan sangat sanggup untuk menenangkan hati mendamaikan jiwa dengan kedamaian ketenangan yang hakiki,

Maka jawabannya adalah karena Allah yang membolak-balikkan hati, seorang merasa resah galau, gelisah tidak tenang, karena hatinya tidak tenag. Maka kita bersandar kepada Allah berdzikir kepada Allah dan tidak bersandar kepada selain Allah karena Allah lah yang membolak balikkan hati, yang memberikan ketenangan kedamaian, bahkan tampa batas,

Allah subhanahu wa ta'ala yang menguasai alam semesta,  disinilah kita akhirnya dapati bahwa berdzikir kepada Allah Subhanahu Wataala memang menenangkan. bukti lain adalah Allah Subhanahu Wa Ta'ala menyebutkan tentang doa yang didalamnya terdapat dzikir dan penghambaan diri kepada Allah.



Jadikanlah Alquran sebagai penyejuk hati, cahaya di dalam dada dan penghilang rasa sedih dan penghilang rasa resah. berzikirh kepada Allah niscaya anda akan mendapatkan ketenangan kedamaian keterangan sempurna tanpa batas.

Friday, August 26, 2016

Harum tapi Haram

Wanita sering diumpamakan bagaikan bunga, terlihat Indah mempesona membuat mata mata menjadi terasa indah melihatnya. Namun sayang bunga dilihat oleh setiap laki-laki yang memandang, demikian pula setiap kumbang mendatanginya. Maka dari itulah Cobalah kita berpikir wahai para wanita, pantaskah seorang wanita disebut sebagai bunga?


Hal ini adalah merupakan sebuah perumpamaan yang sebetulnya kalau kita pikirkan kurang lah tepat. bunga bisa dijamah oleh setiap laki-laki, bunga bisa didatangi oleh setiap kumbang yang menginginkannya, sungguh ini perumpamaan yang sangat tidak baik sekali. Bukan demikian perumpamaan seorang wanita muslimah. seorang wanita muslimah seharusnya bagaikan kerang, bagaikan mutiara di dalam kerang di dasar lautan. Ia sangat mahal harganya, yang tertutup oleh kerang, tak setiap mata bisa memandang, tidak setiap kumbang bisa merasakan, hanya laki-laki yang mempunyai kekuatan, hanya laki-laki yang mempunyai kekuatan Iman, laki-laki yang sholeh yang ia pilih untuk mendapatkannya.

Bunga memang sangat harum sekali, ketika kita menciumnya harum terasa, namun apakah seorang wanita pantas membiarkan laki-laki mencium harum tubuhnya? sementara Rasulullah Shallallahu Alaihi Wasallam menyebutkan bahwa wanita yang keluar dari rumahnya dalam keadaan dia memakai minyak wangi, harum nya bisa dinikmati oleh laki-laki, beliau mengatakan dia adalah seorang wanita pelacur, wanita yang suka berzina, wanita yang selalu berzina. Janganlah wanita, engkau disebut sebagai seorang bunga, tapi tetaplah seorang wanita yang betul-betul beriman kepada Allah, yang betul-betul beriman kepada kehidupan akhirat, hanya berusaha untuk memberikan kecantikannya untuk suaminya yang tercinta, memberikan kamu semua perhiasan dirinya untuk suami yang telah dihalalkan untuknya. Menjadi bidadari-bidadari surga, menjadi penghuni penghuni surga yang cantik jelita

Subhanallah betapa indahnya ketika kita melihat kerang yang di dasar lautan itu tertutup oleh kerang mutiara, mutiara yang di dalam kerang tersebut kita lihat mahal harganya, yang indah sekali namun tidak setiap manusia bisa menjamahnya. Coba kita pikirkan wahai para wanita muslimah memperlihatkan aurat-aurat Anda menganggap itu adalah sebagai sebuah kemodernan, barangkali Anda mau memperlihatkan kecantikan-kecantikan Anda kepada laki-laki dianggap itu sebagai sebuah kemajuan zaman? Jawabannya adalah tidak, kemajuan zaman tidak demikian. Coba Ingat di zaman purbakala terdahulu disebutkan dalam sejarah sejarah di zaman dahulu, di zaman purbakala wanita-wanita bertelanjang tak berpakaian, demikian pula ketika sebelum turunnya ayat hijab, wanita-wanita yang memperlihatkan auratnya sampai Allah turunkan kemudian ayat hijab dalam firman Allah, Quran surat al-ahzab ayat 59

يَا أَيُّهَا النَّبِيُّ قُلْ لِأَزْوَاجِكَ وَبَنَاتِكَ وَنِسَاءِ الْمُؤْمِنِينَ يُدْنِينَ عَلَيْهِنَّ مِنْ جَلَابِيبِهِنَّ ذَلِكَ أَدْنَى أَنْ يُعْرَفْنَ فَلَا يُؤْذَيْنَ وَكَانَ اللَّهُ غَفُورًا رَحِيمًا

“Hai Nabi, Katakanlah kepada isteri-isterimu, anak-anak perempuanmu dan isteri-isteri orang mukmin: "Hendaklah mereka mengulurkan jilbabnya ke seluruh tubuh mereka". yang demikian itu supaya mereka lebih mudah untuk dikenal, karena itu mereka tidak diganggu. dan Allah adalah Maha Pengampun lagi Maha Penyayang.”

Sebelum turunnya ayat ini wanita-wanita pada waktu itu tidak menutup aurat aura terlihat dadanya terlihat rambutnya terurai melihat perhiasan dan kecantikannya, kemudian Allah memerintahkan mereka untuk menutup aurat aurat mereka. Berarti sebetulnya jilbab adalah kemodernan, justru membuka aurat itu kembali kepada jaman kuno, jaman jahiliyah terdahulu. Wanita jangan Anda ridho kecantikan Anda dinikmati oleh laki-laki setiap laki-laki yang bisa memandang Anda.

Jangan Anda merasa senang jika aurat Anda dinikmati setiap mata mata yang berbinar mata-mata lelaki ,karena setiap mata-mata yang menikmati aurat itu akan menjadi dosa. Cobalah kita pikirkan ambil dua buah permen, buka salah satu kemudian buang keduanya, lalu kita ambil kembali, kira-kira mana yang lebih kita ambil. Pasti permen yang masih tertutup yang akan diambil, soalnya masih tertutup rapi, karena itu masih tersimpan dan terpelihara dan terjaga. Demikian pula seharusnya seorang wanita lebih berusaha menjaga aurat, menjaga kehormatannya.



Memang untuk menutup aurat sangat berat, tapi mulia di sisi Allah, alasan seperti panas dan gerah tidaklah sebanding dengan siksaan yang nanti akan diterima.Bunga ketika kita melihat indah, setiap mata bisa melihat, setiap kumbang bisa mengambil madunya dan sarinya bukanlah perumpamaan seorang mukminah tapi itu adalah perumpaan wanita jalang yang menawarkan kecantikanya pada setiap pria, harum tapi haram, itu yang dilarang oleh  Allah, karena itu adalah perhiasan yang sangat luar biasa yang hanya boleh dinikmati suaminya saja

Tutorial Android dengan Retrofit HTTP Library

Hai, pada artikel sebelumnya yang berjudul Android Grid RecyclerVew dan Menampilkan Gambar dengan Picasso, telah dijelaskan cara membuat aplikasi android yang menampilkan data dengan grid layout menggunakan RecyclerView. Pada artikel tersebut juga diterangkan cara untuk menampilkan data dengan menggunakan library Picasso. Dan kali ini, akan dijelaskan cara menggunakan Retrofit di dalam aplikasi untuk mengambil json dan menampilkan data ke aplikasi.


Retrofit adalah library android yang dibuat oleh Squre yang digunakan sebagai REST Client pada Android, yang pasti akan memudahkan kita dalam programing. Karena kita tidak perlu lagi untuk membuat method-method sendiri untuk menggunakan REST Client API dari backend. Library ini menyediakan framework yang powerfull untuk authenticating dan berinteraksi dengan API dengan mengirimkan request menggunakan OkHTTP.

Menyiapkan API

Pada artikle ini kita akan menggunakan API dari sebuah website bernama The Movie DB, website penyedia informasi tentang film dan juga menyediakan API secara gratis dengan syarat harus register terlebih dahulu.

Untuk mendapatkan API, masuk ke website tersebut, lalu pilih Sign Up. Selanjutnya masuk ke akun, lalu pilih menu API dan lakukan langkah sesuai dengan yang dibituhkan, jika sudah maka akan tampil data seperti ini


Membuat Project Baru

Pertama buat project baru dengan nama Retrofit HTTP Library. Pilih empty activity pada pilihan activity.

Membuat Request Pertama

Menginstal Library

Untuk menggunakan Retrofit, kiata harus menginstal terlebih dahulu library Retrofit dan library Gson. Library gson sendiri adalah library yang dilincurkan oleh Google untuk memparsing data json.

Buka build:grandle dan masukkan kode berikut ini, setelah itu pilih sync project


dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.0.0'
// 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'
compile 'com.android.support:recyclerview-v7:24.0.0'
}


Membuat Model

Pertama, kita harus mengetahui tipe respon json yang akan kita terima. Buka link berikut ini http://api.themoviedb.org/3/movie/top_rated?api_key=(api sobat). Maka kita akan mendapatkan 50 data film. Gunakan JsonViewer untuk melihat struktur json. Setelah dibuka, salin seluruh data yang tampil ke dalam JsonViewer dan pilih tab Viewer. Dari situ kita bisa melihat struktur data seperti field dan parent data yang nantinya akan kita panggil dalam aplikasi ini



Masuk ke aplikasi Android Studio, klik kanan dan tambahkan package baru dengan nama Model, kemudian buat class baru dengan nama Movie.java dan buat kodenya seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary.Model;

import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;
import java.util.List;

/**
* Created by AJISETYA
*/
public class Movie {

@SerializedName("poster_path")
private String posterPath;
@SerializedName("adult")
private boolean adult;
@SerializedName("overview")
private String overview;
@SerializedName("release_date")
private String releaseDate;
@SerializedName("genre_ids")
private List<Integer> genreIds = new ArrayList<Integer>();
@SerializedName("id")
private Integer id;
@SerializedName("original_title")
private String originalTitle;
@SerializedName("original_language")
private String originalLanguage;
@SerializedName("title")
private String title;
@SerializedName("backdrop_path")
private String backdropPath;
@SerializedName("popularity")
private Double popularity;
@SerializedName("vote_count")
private Integer voteCount;
@SerializedName("video")
private Boolean video;
@SerializedName("vote_average")
private Double voteAverage;

public Movie(String posterPath, boolean adult, String overview, String releaseDate, List<Integer> genreIds, Integer id,
String originalTitle, String originalLanguage, String title, String backdropPath, Double popularity,
Integer voteCount, Boolean video, Double voteAverage) {
this.posterPath = posterPath;
this.adult = adult;
this.overview = overview;
this.releaseDate = releaseDate;
this.genreIds = genreIds;
this.id = id;
this.originalTitle = originalTitle;
this.originalLanguage = originalLanguage;
this.title = title;
this.backdropPath = backdropPath;
this.popularity = popularity;
this.voteCount = voteCount;
this.video = video;
this.voteAverage = voteAverage;
}

public Double getVoteAverage() {
return voteAverage;
}

public void setVoteAverage(Double voteAverage) {
this.voteAverage = voteAverage;
}

public String getPosterPath() {
return posterPath;
}

public void setPosterPath(String posterPath) {
this.posterPath = posterPath;
}

public boolean isAdult() {
return adult;
}

public void setAdult(boolean adult) {
this.adult = adult;
}

public String getOverview() {
return overview;
}

public void setOverview(String overview) {
this.overview = overview;
}

public String getReleaseDate() {
return releaseDate;
}

public void setReleaseDate(String releaseDate) {
this.releaseDate = releaseDate;
}

public List<Integer> getGenreIds() {
return genreIds;
}

public void setGenreIds(List<Integer> genreIds) {
this.genreIds = genreIds;
}

public Integer getId() {
return id;
}

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

public String getOriginalTitle() {
return originalTitle;
}

public void setOriginalTitle(String originalTitle) {
this.originalTitle = originalTitle;
}

public String getOriginalLanguage() {
return originalLanguage;
}

public void setOriginalLanguage(String originalLanguage) {
this.originalLanguage = originalLanguage;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getBackdropPath() {
return backdropPath;
}

public void setBackdropPath(String backdropPath) {
this.backdropPath = backdropPath;
}

public Double getPopularity() {
return popularity;
}

public void setPopularity(Double popularity) {
this.popularity = popularity;
}

public Integer getVoteCount() {
return voteCount;
}

public void setVoteCount(Integer voteCount) {
this.voteCount = voteCount;
}

public Boolean getVideo() {
return video;
}

public void setVideo(Boolean video) {
this.video = video;
}
}


Di dalam class Moview, fild dala data json dideklarasikan dan dijadikan variable untuk diproses di dalam aplikasi. Dalam class tersebut juga menggunakan getter dan setter untuk mengatur dan mendapatkan data.

Selanjutnya buat class baru dengan nama MoviewResponse.java. Class ini digunakan untuk mendapatkan data tambahan yang nanatinya dibutuhkan dalam aplaikasi. Untuk kodenya seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary.Model;

import com.google.gson.annotations.SerializedName;

import java.util.List;

/**
* Created by AJISETYA
*/
public class MovieResponse {

@SerializedName("page")
private int page;
@SerializedName("results")
private List<Movie> results;
@SerializedName("total_results")
private int totalResults;
@SerializedName("total_pages")
private int totalPages;

public int getTotalPages() {
return totalPages;
}

public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}

public int getPage() {
return page;
}

public void setPage(int page) {
this.page = page;
}

public List<Movie> getResults() {
return results;
}

public void setResults(List<Movie> results) {
this.results = results;
}

public int getTotalResults() {
return totalResults;
}

public void setTotalResults(int totalResults) {
this.totalResults = totalResults;
}


}


Membuat Instansi Retrofit

Kita membutuhkan Retrofit Builder dan URL dasar. Maka buat package baru dengan nama Rest, dan buat class baru dengan nama ApiClient.java, kemudian buat kodenya seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary.Rest;

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

/**
* Created by AJISETYA
*/
public class ApiClient {

public static final String BASE_URL = "http://api.themoviedb.org/3/";
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;
}
}



Mendefinisikan Endpoints

Endpoint didefinisikan di dalam interface menggunakan anotasi spesial retrofit untuk untuk mengkodekan rincian tentang parameter dan metode permintaan.

Buat Interface baru dengan nama ApiInterface.java di dalam package Rest dan buat kodenya seperti berikut


package com.blogsetyaaji.retrofithttplibrary.Rest;

import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
* Created by AJISETYA
*/
public interface ApiInterface {
@GET("movie/top_rated")
Call<MovieResponse> getTopRatedMovies(@Query("api_key") String apiKey);

@GET("movie/{id}")
Call<MovieResponse> getMovieDetails(@Path("id") int id, @Query("api_key") String apiKey);
}



Setiap EndPoint menentukan anotasi dari method HTTP (GET, POST, dll) dan parameter dari method ini juga memiliki anotasi spesial (@Query, @Path, @Body, dll)

Memangil Permintaan Pertama

Buka MainActivity.java dan buat kodenya menjadi seperti di bawah ini. Jangan lupa masukkan Api ilik sobat.


package com.blogsetyaaji.retrofithttplibrary;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.blogsetyaaji.retrofithttplibrary.Model.Movie;
import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiClient;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiInterface;

import java.util.List;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = MainActivity.class.getSimpleName();

// TODO - insert your themoviedb.org API KEY here
private final static String API_KEY = "e5013e88aad0bad4821bdac93d1d6a30";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (API_KEY.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please obtain your API KEY first from themoviedb.org", Toast.LENGTH_LONG).show();
return;
}

ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);

Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {
List<Movie> movies = response.body().getResults();
Log.d(TAG, "Number of movies received: " + movies.size());
Toast.makeText(MainActivity.this, "Number of movies received: " + movies.size(), Toast.LENGTH_LONG).show();
}

@Override
public void onFailure(Call<MovieResponse>call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
}


Retrofit akan mendownload dan memparsing data API dan mengembalikan ke User Interface lewat metode onResponse dan onFailure. Tapi sebelum menjalankan aplikasi, terlebih dahulu beri izin akses internet pada AndroidManifest.xml seperti kode di bawah ini


<uses-permission android:name="android.permission.INTERNET"/>


Jalankan aplikasi dengan memilih menu Run 'app', hasilnya akan seperti berikut


Dan itu adalah percobaan pertama untuk mengetes apakah permintaan bisa diproses pada tahap selanjutnya. Sekarang kita akanmelakukan langkah selanjutnya yaitu menampilkan data dari web The Movie Db. Berikut langkah-langkahnya.

Menampilkan Data di RecyclerView

Selain kita menampilkan data di RecyclerView, kita juga akan menampilkan gambar di library Picasso. Jadi untuk pertama kali, kita lakukan langkah di bawah ini

Menambah Dependencies

Tambahkan dependencies baru di dalam build:grandle untuk menambah library recyclerview dan picasso. Kodenya seperti berikut ini


compile 'com.android.support:recyclerview-v7:24.0.0'
compile 'com.squareup.picasso:picasso:2.3.2'


Membuat Tampilan

Buka color.xml dan tambahkan kode hingga menjadi seperti di bawah ini untuk menambah warna yang nantinya akan ditampilkan.


<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>

<color name="orange">#FF3909</color>
<color name="colorAccentDark">#00B482</color>

<color name="colorBlack">#555555</color>
<color name="colorWhite">#FFFFFF</color>
<color name="colorGrey">#707070</color>
<color name="colorGreyLight">#8A8A8A</color>
</resources>


Selanjutnya kita buat gambar bintang untuk menunjukka rate dari film. Buat layout baru di dalam folder drawable dengan nama star.xml dan buat kodenya seperti berikut ini



<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<path
android:fillColor="#000"
android:pathData="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" />
</vector>


Kita butuh layout untuk menampng informasi yang akan ditampilkan. Kita membutuhkan 4 TextView dan dua ImageView dalam layout tersebut. Buat layout baru dengan nama list_item_movie.xml dan buat kodenya seperti berikut ini


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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/movies_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="72dp"
android:orientation="horizontal"
android:padding="16dp">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/backbg"
android:layout_marginRight="7dp"/>

<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:paddingRight="16dp"
android:textStyle="bold"
android:textColor="@color/colorBlack"
android:textSize="16sp" />


<TextView
android:id="@+id/subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="16dp"
android:textColor="@color/colorGreyLight" />

<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"
android:paddingRight="16dp"
android:textColor="@color/colorGreyLight" />

</LinearLayout>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="35dp"
android:orientation="horizontal">

<ImageView
android:id="@+id/rating_image"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_centerInParent="true"
android:scaleType="centerCrop"
android:src="@drawable/star"
android:tint="@color/colorAccent" />


<TextView
android:id="@+id/rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="5.0" />
</LinearLayout>

</LinearLayout>


Tambahkan objek RecyclerViewada di dalam activity_main.xml dengan membuat kodenya seperti berikut ini


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.blogsetyaaji.retrofithttplibrary.MainActivity">

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/movie_recycler"/>
</RelativeLayout>


Membuat Adapter

RecylerView membutuhkan adapter yang berfungsi untuk melihat, mengikat, dan memproses data. Untuk membuatnya, buat class baru dengan nama MovieAdapter.java di dalam package Adapter dan buat kodenya seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary.Adapter;

import android.content.Context;
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.LinearLayout;
import android.widget.TextView;

import com.blogsetyaaji.retrofithttplibrary.Model.Movie;
import com.blogsetyaaji.retrofithttplibrary.R;
import com.squareup.picasso.Picasso;

import java.util.List;

/**
* Created by AJISETYA
*/
public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.MovieViewHolder> {

private List<Movie> movies;
private int rowLayout;
private Context context;


public static class MovieViewHolder extends RecyclerView.ViewHolder {
LinearLayout moviesLayout;
TextView movieTitle;
TextView data;
TextView movieDescription;
TextView rating;
ImageView backbg;


public MovieViewHolder(View v) {
super(v);
moviesLayout = (LinearLayout) v.findViewById(R.id.movies_layout);
movieTitle = (TextView) v.findViewById(R.id.title);
data = (TextView) v.findViewById(R.id.subtitle);
movieDescription = (TextView) v.findViewById(R.id.description);
rating = (TextView) v.findViewById(R.id.rating);
backbg = (ImageView) v.findViewById(R.id.backbg);
}
}

public MoviesAdapter(List<Movie> movies, int rowLayout, Context context) {
this.movies = movies;
this.rowLayout = rowLayout;
this.context = context;
}

@Override
public MoviesAdapter.MovieViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
return new MovieViewHolder(view);
}


@Override
public void onBindViewHolder(MovieViewHolder holder, final int position) {
holder.movieTitle.setText(movies.get(position).getTitle());
holder.data.setText(movies.get(position).getReleaseDate());
holder.movieDescription.setText(movies.get(position).getOverview());
holder.rating.setText(movies.get(position).getVoteAverage().toString());
Picasso.with(context).load("https://image.tmdb.org/t/p/w300_and_h450_bestv2" + movies.get(position).getBackdropPath()).resize(200, 250).into(holder.backbg);
}

@Override
public int getItemCount() {
return movies.size();
}
}


Di dalam kode adapter di atas, terdapat satu baris kode picasso untuk menampilkan gambar dari sumber API dengan mengunakan tambahan link dasar.

Membuat Activity

Sekarang buka MainActivity.java untuk menambahkan data ke activity objek RecyclerView. Buat kodenya seperti berikut ini


package com.blogsetyaaji.retrofithttplibrary;

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.blogsetyaaji.retrofithttplibrary.Adapter.MoviesAdapter;
import com.blogsetyaaji.retrofithttplibrary.Model.Movie;
import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiClient;
import com.blogsetyaaji.retrofithttplibrary.Rest.ApiInterface;

import java.util.List;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = MainActivity.class.getSimpleName();

// TODO - insert your themoviedb.org API KEY here
private final static String API_KEY = "e5013e88aad0bad4821bdac93d1d6a30";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (API_KEY.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please obtain your API KEY first from themoviedb.org", Toast.LENGTH_LONG).show();
return;
}

final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.movie_recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);

Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {
List<Movie> movies = response.body().getResults();
Log.d(TAG, "Number of movies received: " + movies.size());
Toast.makeText(MainActivity.this, "Number of movies received: " + movies.size(), Toast.LENGTH_LONG).show();
recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.list_item_movie, getApplicationContext()));
}

@Override
public void onFailure(Call<MovieResponse>call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
}

Menjalankan Aplikasi

Setelah semuanya selesai, saatnya menjalankan aplikais dengan memilih menu Run 'app'. Tampilanya akan seperti berikut ini



SIlahkan jika sobat ingin melihat hasil projectnya di github saya

Follow @AjiSetyaWatchStar

Data telah berhasil ditampilkan, mungki sobat bisa menambahkan CardView untuk mempercantik tampilanya. Sekian artikel tentang Tutorial Android dengan Retrofit HTTP Library. semoga bermanfaat. Ikuti terus Blog Setya Aji dan nanikan artikel menarik lainya.