Mengintegrasikan Activity

  • Pada class MainActivity, modifikasi kode sehingga menjadi berikut:

    public class MainActivity extends AppCompatActivity {
    
      private static final String TAG = MainActivity.class.getName();
    
      private ImageView iconImage;
      private TextView jokeText;
      private JokesService service;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        iconImage = findViewById(R.id.image_icon);
        jokeText = findViewById(R.id.text_joke);
        service = ServiceGenerator.createService(JokesService.class);
    
        Button moreButton = findViewById(R.id.button_more);
      }
    }
    
  • Joke akan ditampilkan ketika aplikasi pertama kali dijalankan dan ketika tombol ditekan. Kedua hal ini menggunakan logika yang sama. Sehingga untuk memudahkan, dibuatlah sebuah method yang menangani request ke REST API.

  • Tambahkan sebuah method moreJoke() dan panggil menggunakan method enqueue dari library Retrofit. Pada method enqueue, terdapat dua buah callback untuk kondisi sukses dan gagal.

    private void moreJoke() {
        Call<Joke> jokeResponse = service.getRandomJoke();
        jokeResponse.enqueue(new Callback<Joke>() {
            @Override
            public void onResponse(Call<Joke> call, Response<Joke> response) {
              ...
            }
    
            @Override
            public void onFailure(Call<Joke> call, Throwable t) {
              ...
            }
        });
    }
    
  • Pada callback kondisi sukses, tambahkan logika untuk menampilkan response ke dalam UI. Untuk gambar, akan digunakan library Picasso untuk menampilkan gambar yang bersumber dari internet.

    Joke joke = response.body();
    Picasso.get().load(joke.getIconUrl()).into(iconImage);
    jokeText.setText(joke.getValue());
    

    Catatan: Untuk menggunakan library Picasso tambahkan dependency ke dalam build gradle.

    implementation 'com.squareup.picasso:picasso:2.71828'
    
  • Sedangkan pada kondisi gagal, tambahkan logika berikut untuk memberitahukan user jika terjadi kesalahan.

    Log.e(TAG, t.toString());
    String message = "Failed to get more joke, please check your connection."
    Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
    
  • Panggil method moreJoke() di dalam method onCreate()

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      ...
      ...
      moreJoke();
      ...
    }
    
  • Tombol More Joke belum memiliki aksi untuk melakukan logika. Tambahkan event click dengan menggunakan logika kode berikut di dalam method onCreate()

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      ...
    
      moreButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
        }
      });
    }
    
  • Panggil method moreJoke() pada event click tombol More Joke

results matching ""

    No results matching ""