Implementasi SaveCaloryFragment
Hasil yang diharapkan
Praktikum
Perhatikan pada hasil yang diharapkan pada tampilan
SaveCaloryFragment
Pada tampilan ini terdapat
Fragment
yang berfungsi untuk menambahkan atau mengubah data calory.Jika anda menjalankan program, dan menekan data calory yang akan diubah. Pada tampilan
SaveCaloryFragment
masih menampilkan data yang kosong. Hal ini dikarenakan data yang dilempar ke Fragment masih belum ditampilkan.Data yang dilempar dari daftar kalori ke fragement
SaveCaloryFragment
dikirim 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.java
tambahkan 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.java
terdapat kode interface sebagai berikutpublic interface OnFragmentInteractionListener { void onSaveMenuClicked(View view, Calory calory); }
Interface tersebut akan dijalankan ketika menu Save ditekan.
Bukalah file
MainActivity.java
kemudian 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
id
pada 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();
}
});
}