RecyclerView
RecyclerView digunakan untuk menampilkan list makanan yang telah diinput. Untuk membuat RecyclerView diperlukan 3 hal yaitu:
- Model : berguna untuk memodelkan data yang akan ditangani
- Adapter : berguna untuk menangani data untuk ditampilkan
- Layout Manager : berguna untuk mengatur tata letak/layout item
- ada 3 macam layout manager:
- LinearLayoutManager
- GridLayoutManager
- StaggeredGridLayoutManager
- ada 3 macam layout manager:
Hal ini dapat diilustrasikan pada gambar berikut:
Praktikum
- RecyclerView yang digunakan pada praktikum kali ini akan menampilkan data Log Calories yang akan ditampilkan pada
LogCaloriesFragment
. - Model : pada praktikum ini model telah dibuat sama dengan Entity yaitu
LogCaloriesEntity
Adapter : adapater juga telah disediakan dengan nama
LogCaloriesAdapter
, akan tetapi ada bagian yang kurang yaitu pada methodonBindViewHolder
. Lengkapi code padaonBindViewHolder
seperti pada contoh:@Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { LogCaloriesEntity logCaloriesEntity= mLogCaloriesEntities.get(position); holder.tvWaktuMakan.setText(logCaloriesEntity.getWaktuMakan()); holder.tvFoodName.setText(logCaloriesEntity.getMakanan()); holder.tvCalory.setText(logCaloriesEntity.getKaloriMakanan()); }
Layout Manager : pada project ini menggunakan Linear Layout Manager.
mRecyclerCalories.setLayoutManager(new LinearLayoutManager(getActivity()));
Setelah tidak ada error pada langkah selanjutnya adalah menggunakan ViewModel yang telah dibuat untuk mengeset adapter RecyclerView, seperti pada code berikut:
logCaloriesViewModel = ViewModelProviders.of(getActivity()).get(LogCaloriesViewModel.class); logCaloriesViewModel.GetListLogCalories(date).observe(getActivity(), new Observer<List<LogCaloriesEntity>>() { @Override public void onChanged(List<LogCaloriesEntity> logCaloriesEntities) { adapterLogCalories.SetListLogCalories(logCaloriesEntities); } });