RecyclerView Adapter
Untuk menampilkan data pada RecyclerView dibutuhkan adapter. Silahkan buka project dengan menggunakan Android Studio dan ikuti langkah-langkah berikut untuk melengkapi kode pada adapter.
Bukalah class
TransactionAdapter
, class ini merupakan turunan dari classRecyclerViewAdapter<TransactionAdapter.ViewHolder>
. Tambahkan kode berikut untuk mendefinisikan hal tersebut.public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.ViewHolder> { }
Generate sampai tidak dijumpai tanda-tanda error.
Pada praktikum kali ini RecyclerView tidak hanya menampilkan data, tetapi dapat juga berinteraksi dengan mengguna. Untuk melakukan hal tersebut dibutuhkan sebuah
interface
. Bacaan lebih lanjut silahkan buka tautan berikut.public interface OnItemTransactionListener { void onTransactionClicked(int index, Transaction item); }
Catatan: Letakkan definisi interface tersebut di bawah definisi class
TransactionAdapter
.Tambahkan atribut list data yang akan ditampilkan.
private List<Transaction> items;
Tambahkan sebuah listener yang telah didefinisikan sebelumnya.
private OnItemTransactionListener listener;
Generate constructor yang membutuhkan dua parameter, list model dan listener.
public TransactionAdapter(List<Transaction> items, OnItemTransactionListener listener) { this.items = items; this.listener = listener; }
Pada inner class
ViewHolder
definisikan atribut-atribut berikut.TextView descriptionText; TextView amountText;
Lakukan binding pada constructor
ViewHolder
dengan kode berikut.public ViewHolder(@NonNull View itemView) { super(itemView); descriptionText = itemView.findViewById(R.id.text_description); amountText = itemView.findViewById(R.id.text_amount); }
Untuk memudahkan proses bind ViewHolder dan data serta penambahan interaksi buatlah method seperti pada kode berikut.
public void bind(final int index, final Transaction item) { descriptionText.setText(item.getDescription()); amountText.setText(String.valueOf(item.getAmount())); // TODO: Tambahkan interaksi click di sini }
Pada method bind, lakukan pengaturan click listener.
itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onTransactionClicked(index, item); } });
Lengkapi ketiga method yang wajib diimplementasikan dalam adapter RecyclerView.
@NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_transaction, parent, false); return new ViewHolder(view); }
@Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Transaction item = items.get(position); holder.bind(position, item); }
@Override public int getItemCount() { return (items != null) ? items.size() : 0; }