Tutorial Membuat Aplikasi Dengan Menggunakan Library LoopJ di Android Studio | Pembelajaran Bagian 2 - MAKALAH SERBA ADA
Pemberitahuan! Website akan maintenance pada tanggal 28 - 30 Oktober 2023

Tutorial Membuat Aplikasi Dengan Menggunakan Library LoopJ di Android Studio | Pembelajaran Bagian 2

alt-text

MakalahSerbaAda.Com - Loopj adalah library Android untuk membuat permintaan HTTP asinkron. Saya menyukainya karena kemudahan penggunaan dan kesederhanaannya. Dibuat oleh James Smith, ini juga dikenal sebagai "Klien HTTP Asinkron Android", dan digunakan oleh perusahaan seperti Instagram, Pinterest, dan banyak lainnya. Ini adalah titik masuk yang baik ke dunia library HTTP, dan akan membantu Anda memahami konsep penting dengan sangat mudah.

Untuk belajar menggunakan Library ini, kita akan membuat MovieTrivia, aplikasi sederhana yang terhubung ke layanan web untuk mengambil informasi tentang film atau acara TV dan menampilkan informasi ini kepada pengguna.

1. Setup

Untuk memulai, membuat proyek Android Studio baru, dengan aktivitas kosong. Untuk memasukkan Loopj, salin ketergantungan dari situs web resmi. Anda dapat menemukan ketergantungan di bawah bagian "Instalasi dan penggunaan dasar" di situs web (atau cukup salin string di bawah).


01	compile 'com.loopj.android:android-async-http:1.4.9'

Pesan "Sync Now" akan muncul di sudut kanan atas. Klik sehingga Gradle akan mengunduh library dan membuatnya tersedia untuk proyek Anda.

Karena aplikasi akan terhubung ke internet, kita harus menyatakan izin yang sesuai untuk diotorisasi oleh pengguna. Buka file AndroidManifest.xml Anda dan, tepat sebelum tag application, tulis:


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

Sekarang Anda siap untuk mulai menggunakan Loopj di aplikasi Anda.

2. Implementasi

Kami akan membuat inerface pengguna yang paling sederhana: hanya TextField untuk memasukkan istilah pencarian, Tombol untuk melakukan pencarian, dan TextView untuk menampilkan hasil. Buka activity_mail.xml dan tambahkan komponen UI yang diperlukan seperti yang ditunjukkan di bawah ini.


01  <?xml version="1.0" encoding="utf-8"?>
02 		<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03  	xmlns:tools="http://schemas.android.com/tools"
04   	android:layout_width="match_parent"
05  	android:layout_height="match_parent"
06  	android:orientation="vertical"
07  	android:padding="@dimen/activity_vertical_margin"
08  	tools:context="com.pdrogfer.movietrivia.MainActivity">
09
10  >LinearLayout
11      android:layout_width="match_parent"
12      android:layout_height="wrap_content"
13      android:orientation="horizontal">
14
15      <EditText
16          android:id="@+id/etSearchTerms"
17          android:layout_width="0dp"
18          android:layout_weight="3"
19          android:layout_height="wrap_content"
20          android:hint="movie or tv show" />
21
22      <Button
23          android:id="@+id/btnSearch"
24          android:layout_width="0dp"
25          android:layout_weight="1"
26          android:layout_height="wrap_content"
27          android:text="Search" />
28
29  </LinearLayout>
30
31  <TextView
32      android:id="@+id/tvSearchResults"
33      android:layout_width="match_parent"
34      android:layout_height="wrap_content"
35      android:layout_marginTop="24dp"
36      android:hint="search results"/>
37  </LinearLayout>

Sekarang, seperti biasa, pasang komponen ini di MainActivity.java Anda.


01  public class MainActivity extends AppCompatActivity implements View.OnClickListener {
02
03  EditText etSearchTerms;
04  Button btnSearch;
05  TextView tvSearchResults;
06
07  @Override
08  protected void onCreate(Bundle savedInstanceState) {
09      super.onCreate(savedInstanceState);
10      setContentView(R.layout.activity_main);
11
12      etSearchTerms = (EditText) findViewById(R.id.etSearchTerms);
13      btnSearch = (Button) findViewById(R.id.btnSearch);
14      tvSearchResults = (TextView) findViewById(R.id.tvSearchResults);
15
16      btnSearch.setOnClickListener(this);
17  }
18
19  @Override
20  public void onClick(View v) {
21      String searchTerm = etSearchTerms.getText().toString();
22      etSearchTerms.setText("");
23      // make Loopj HTTP call
24  }
25 }

Untuk menjaga kode Anda tetap bersih dan teratur, buat kelas java terpisah, MyLoopjTask.java, untuk memuat semua kode dan operasi khusus Loopj. Anda akan memerlukan dua variabel instan, satu dari tipe RequestParams untuk membuat detail pencarian ke dalam URL, dan tipe lainnya AsyncHttpClient untuk benar-benar membuat permintaan HTTP. Sebelum melangkah lebih jauh, periksa apakah Android Studio menambahkan impor yang diperlukan ini.


01	import org.json.JSONObject;
02	import cz.msebera.android.httpclient.Header;

Buat juga metode yang menggunakan kueri pengguna sebagai argumen, di sinilah pekerjaan sebenarnya akan dilakukan.


01	public class MyLoopjTask {
02 
03  private static final String TAG = "MOVIE_TRIVIA";
04 
05  AsyncHttpClient asyncHttpClient;
06  RequestParams requestParams;
07 
08  String BASE_URL = "http://www.omdbapi.com/?";
09  String jsonResponse;
10 
11  public MyLoopjTask() {
12      asyncHttpClient = new AsyncHttpClient();
13      requestParams = new RequestParams();
14  }
15 
16  public void executeLoopjCall(String queryTerm) {
17      requestParams.put("s", queryTerm);
18      asyncHttpClient.get(BASE_URL, requestParams, new JsonHttpResponseHandler() {
19          @Override
20          public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
21              super.onSuccess(statusCode, headers, response);
22              jsonResponse = response.toString();
23              Log.i(TAG, "onSuccess: " + jsonResponse);
24          }
25 
26          @Override
27          public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
28              super.onFailure(statusCode, headers, throwable, errorResponse);
29              Log.e(TAG, "onFailure: " + errorResponse);
30          }
31      });
32  }
33 }

Seperti yang Anda lihat, Anda dapat menambahkan semua kunci parameter permintaan API yang diperlukan dengan instance RequestParams (dalam hal ini, hanya kueri yang dimasukkan oleh pengguna). Versi metode get() ini mengembalikan objek JSON ke onSuccess, tetapi ada variasi lain yang tersedia untuk memenuhi kebutuhan Anda. (Gunakan Ctrl+O untuk melihat versi lain dari metode ini.)

Ini semua yang perlu Anda lakukan untuk mengimplementasikan klien Loopj untuk membuat panggilan HTTP ke layanan web. Dalam kasus kami, kami ingin mengirim permintaan kami ketika pengguna mengklik tombol "Cari". Jadi, kembali ke MainActivity, buat instance MyLoopjTask dan di dalam onClick panggil executeLoopjCall dengan istilah yang dimasukkan oleh pengguna. MainActivity akan terlihat seperti berikut.


01	public class MainActivity extends AppCompatActivity implements View.OnClickListener {
02
03  EditText etSearchTerms;
04  Button btnSearch;
05  TextView tvSearchResults;
06  MyLoopjTask myLoopjTask;
07
08  @Override
09  protected void onCreate(Bundle savedInstanceState) {
10      super.onCreate(savedInstanceState);
11      setContentView(R.layout.activity_main);
12
13      etSearchTerms = (EditText) findViewById(R.id.etSearchTerms);
14      btnSearch = (Button) findViewById(R.id.btnSearch);
15      tvSearchResults = (TextView) findViewById(R.id.tvSearchResults);
16
17      btnSearch.setOnClickListener(this);
18
19      myLoopjTask = new MyLoopjTask();
20  }
21
22  @Override
23  public void onClick(View v) {
24      String searchTerm = etSearchTerms.getText().toString();
25      etSearchTerms.setText("");
26      // make loopj http call
27      myLoopjTask.executeLoopjCall(searchTerm);
28  }
29 }

Sekarang, jika Anda menjalankan aplikasi, Anda akan melihat hasil permintaan Anda di jendela log.

3. Publikasikan Hasil ke UI

Memisahkan operasi asinkron ke dalam kelas khusus membantu menjaga kode kita tetap bersih, tetapi itu berarti kita tidak memiliki akses ke elemen UI secara langsung. Untuk menampilkan hasil permintaan ini, saya sarankan untuk membuat user interface. Ini adalah strategi umum, yang dibahas misalnya anda menambahkan pertanyaan dalam Stack Overflow. Ini memiliki tiga langkah mudah.

Buat Interface

Pertama, buat interface dengan metode tunggal yang akan dipanggil ketika hasil permintaan HTTP diperoleh dari Loopj.


01	public interface OnLoopjCompleted {
02  public void taskCompleted(String results);
03 }

Perbarui Asynchronous Task Handler

Di MyLoopjTask, ubah konstruktor sehingga dibutuhkan Context dan instance OnLoopjCompleted sebagai parameter.


01	public MyLoopjTask(Context context, OnLoopjCompleted listener) {
02  asyncHttpClient = new AsyncHttpClient();
03  requestParams = new RequestParams();
04  this.context = context;
05  this.loopjListener = listener;
06 }

Sekarang, ketika hasil permintaan tersedia di MyLoopjTask, teruskan ke metode user interface.


01	@Override
02	public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
03	  super.onSuccess(statusCode, headers, response);
04	  jsonResponse = response.toString();
05	  loopjListener.taskCompleted(jsonResponse);
06	  Log.i(TAG, "onSuccess: " + jsonResponse);
07	}

Update Activity

Terakhir, buat aktivitas yang ingin Anda perbarui dalam hal ini MainActivity implementasikan OnLoopjCompleted. Perbarui inisialisasi myLoopjTask ke myLoopjTask = new MyLoopjTask(this, this);.

Karena aktivitas Anda sekarang mengimplementasikan OnLoopjCompleted, Android Studio akan memaksa Anda untuk mengimplementasikan metode taskCompleted. Di sana, Anda dapat memperbarui UI dengan data baru.


01	@Override
02	  public void taskCompleted(String results) {
03      tvSearchResults.setText(results);
04  }

4. Kesimpulan

Di sana Anda memilikinya. Saat Anda menjalankan aplikasi, semua data dari permintaan HTTP asinkron Anda akan ditampilkan kepada pengguna. Secara alami, Anda ingin mengurai data JSON yang diterima untuk mengekstrak hanya bagian yang Anda butuhkan. Misalnya, Anda dapat menampilkan poster film dengan meneruskan URL gambar poster ke Picasso.

Dalam tutorial ini, Anda telah melihat cara menggunakan Loopj, pada sebuah library untuk melakukan permintaan HTTP asinkron di Android. Loopj mudah digunakan hanya dengan beberapa baris kode. Sekarang Anda tidak punya alasan untuk tidak memperbarui aplikasi Anda dengan konten dari layanan web favorit Anda!

Pilih opsi donasi!

BNI - Fauzia Ramadhan - (null)
Merasa terbantu dengan artikel ini? Ayo dukung dengan donasi. Klik tombol merah.
Author & Publisher of articles on the "Makalah Serba Ada" Website page

Post a Comment

Berikan Feedback Terbaik Untuk Artikel Ini
© ‧ MAKALAH SERBA ADA. All rights reserved. Developed by Jago Desain