Onclicklistener Pada Recyclerview: Modul Ini Merupakan Kelanjutan Dari Modul Recyclerview
Onclicklistener Pada Recyclerview: Modul Ini Merupakan Kelanjutan Dari Modul Recyclerview
1. Sebuah studi kasus diambil dari hasil modul Recyclerview sebelumnya. Pada tampilan
Recyclerview diatas, salah satu elemen, yaitu bagian gambarnya, dapat diclick dan akan
memberikan respon sesuai dengan yang diprogram. Dalam kasus ini, respon yang diberikan
adalah menghapus item dalam arraylist.
2. Inti dari aktifitas yang harus dilakukan adalah memberikan OnClickListener pada elemen
gambar tersebut.
3. OnClickListener pada sebuah recyclerview diberikan didalam adapter Recyclerview.
4. Dari Contoh di modul Recyclerview, adapter diberikan pada file “ExampleAdapter.java”.
5. Perhatikan Fungsi OnBindViewHolder
@Override
//i menunjukan index / posisi item dalam arraylist
public void onBindViewHolder(@NonNull ExampleViewHolder exampleViewHolder, int i) {
ExampleItem currentItem = mExampleList.get(i);
exampleViewHolder.mImageView.setImageResource(currentItem.getmImageResource());
exampleViewHolder.mTextView1.setText(currentItem.getmText1());
exampleViewHolder.mTextView2.setText(currentItem.getmText2());
}
exampleViewHolder.mImageView.setImageResource(currentItem.getmImageResource());
exampleViewHolder.mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mExampleList.remove(i);
notifyItemRemoved(i);
notifyItemRangeChanged(i, getItemCount());
}
});
exampleViewHolder.mTextView1.setText(currentItem.getmText1());
exampleViewHolder.mTextView2.setText(currentItem.getmText2());
}
2. Buka file adapter “ExampleAdapter.java”. Perlu ditambahkan sebuah variabel baru yang
bertugas sebagai pointer dari sebuah Cardview pada Class Viewholder.
public static class ExampleViewHolder extends RecyclerView.ViewHolder{
public ImageView mImageView;
public TextView mTextView1;
public TextView mTextView2;
public CardView cvMain;
3. Studi kasus kali OnClickListener akan memberikan respon berpindah halaman, sehingga pada
OnClickListener akan menggunakan Intent method. Dihalaman (Activity) selanjutnya akan
ditampilkan text dari CardViewer. Tetap pada file adapter, tambahkan OnClickListener pada
Cardview pada method OnBindViewHolder
public void onBindViewHolder(@NonNull ExampleViewHolder exampleViewHolder, final
int i) {
final ExampleItem currentItem = mExampleList.get(i);
exampleViewHolder.mImageView.setImageResource(currentItem.getmImageResource());
exampleViewHolder.mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Clicked : "+i,
Toast.LENGTH_SHORT).show();
}
});
exampleViewHolder.mTextView1.setText(currentItem.getmText1());
exampleViewHolder.mTextView2.setText(currentItem.getmText2());
exampleViewHolder.cvMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(),Second_Activity.class);
intent.putExtra("text1",currentItem.getmText1());
intent.putExtra("text2",currentItem.getmText2());
v.getContext().startActivity(intent);
}
});
Second_Activity.java
package com.example.modul7_1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import org.w3c.dom.Text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView t3 = (TextView)findViewById(R.id.textView3);
TextView t4 = (TextView)findViewById(R.id.textView4);
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="152dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="88dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
</android.support.constraint.ConstraintLayout>