Onclick Pada Recyclerview Saat Diklik Dengan Item Click Listener

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

 kembali lagi bersama aku di artikel tutorial android Onclick pada RecyclerView Ketika Diklik dengan Item Click Listener

Pada objek RecyclerView tidak terdapat perintah onItemClickListener menyerupai yang dimiliki oleh ListView. Untuk menangani perintah klik di RecyclerView, sanggup memakai interface RecyclerView.OnItemTouchListener(). Untuk perintah klik sanggup ditangani dalam onInterceptTouchEvent() dan mengunakan GestureDetector untuk mendeteksi ketukan. Sedangkan untuk mendapat posisi item ketika diklik, dengan mengunakan method getChildAdapterPosition() dalam objek RecyclerView. dan tampilan item yang diklik sanggup 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, kemudian buka MainActivity.java dan sisipkan aba-aba 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 menyerupai 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 simpulan String TAG = MainActivity.class.getSimpleName();      // TODO - insert your themoviedb.org API KEY here     private simpulan 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;         }          simpulan 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) {                 simpulan 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 kegiatan dengan menentukan sajian Run 'app'. Dan akibatnya ialah kalau salah satu item diklik, maka akan muncul toast yang berisi id film.



SIlahkan kalau sahabat ingin melihat hasil projectnya di github saya

Follow @AjiSetya Watch Star


0 Komentar untuk "Onclick Pada Recyclerview Saat Diklik Dengan Item Click Listener"

Back To Top