Implementasi SaveCaloryFragment
Hasil yang diharapkan

Praktikum
Perhatikan pada hasil yang diharapkan pada tampilan
SaveCaloryFragmentPada tampilan ini terdapat
Fragmentyang berfungsi untuk menambahkan atau mengubah data calory.Jika anda menjalankan program, dan menekan data calory yang akan diubah. Pada tampilan
SaveCaloryFragmentmasih menampilkan data yang kosong. Hal ini dikarenakan data yang dilempar ke Fragment masih belum ditampilkan.Data yang dilempar dari daftar kalori ke fragement
SaveCaloryFragmentdikirim menggunakan sebuah bundle. Maka dari itu, kita harus melakukan passing obyek dengan menggunakan bundle. Tambahkan kode berikut pada fragmentSaveCaloryFragment
bundle.putParcelable(Constant.ARG_CALORY, calory);
- Perhatikan method
initComponents()pada fileSaveCaloryFragment.javatambahkan baris kode berikut untuk menampilkan data calory yang telah didapatkan.
foodText.setText(calory.getFood());
caloryText.setText(String.valueOf(calory.getCalory()));
Jalankan kembali program, dan amati apa yang terjadi!
Pada file
SaveCaloryFragment.javaterdapat kode interface sebagai berikutpublic interface OnFragmentInteractionListener { void onSaveMenuClicked(View view, Calory calory); }Interface tersebut akan dijalankan ketika menu Save ditekan.
Bukalah file
MainActivity.javakemudian carilah blok methodonSaveMenuClicked(). Method ini merupakan implementasi aksi simpan padaSaveCaloryFragment. Tambahkan kode untuk melakukan penyimpanan data calory.Simpan data dapat berarti, tambahkan data jika merupakan data baru. Update data jika merupakan data lama. Untuk membedakan data baru dan data lama, dapat digunakan atribut
idpada modelCalory. Sehingga kode untuk melakukan penyimpanan menjadi:
@Override
public void onSaveMenuClicked(final View view, Calory calory) {
Call<Calory> caloryCall = (calory.getId() == null)
? caloryService.addCalory(calory)
: caloryService.editCalory(calory.getId(), calory);
caloryCall.enqueue(new Callback<Calory>() {
@Override
public void onResponse(Call<Calory> call, Response<Calory> response) {
Snackbar.make(view, "Save successfull", Snackbar.LENGTH_SHORT).show();
changeFragment(CaloryFragment.newInstance());
}
@Override
public void onFailure(Call<Calory> call, Throwable t) {
Snackbar.make(view, "Error has occured!", Snackbar.LENGTH_SHORT).show();
}
});
}