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 class RecyclerViewAdapter<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;
    }
    

hasil yang cocok ""

    Tidak ada hasil yang cocok ""