Anda di halaman 1dari 11

TUGAS

MOBILE PROGRAMMING

Fragment dan Recyclerview

OLEH:

19552011187
Luthfi Alfikri
KELAS PERTUKARAN ITB STIKOM Bali
DAN STTB BANDUNG

INSTITUT TEKNOLOGI DAN BISNIS (ITB) STIKOM Bali


2021
Petunjukkan Pengerjaan
Jawab dikumpukan dalam format pdf sesuai dengan waktu yang telah ditentukan
melalui aplikasi Ms. Teams

Soal
1. Jelaskan apakah yang Anda ketahui tentang Fragment.
Jawab :
Fragment  merupakan salah satu komponen pada Android Studio dengan
fungsi yang hampir sama seperti activity tetapi memiliki “lifecycle” yang
berbeda.

2. Apakah perbedaan antara Fragment dengan Activity ?


Jawab :
Activity merupakan suatu halaman utama dalam aplikasi yang mengatur
tampilan (misal : layout.xml), user interaksinya dan juga untuk mengatur
class pada Java (missal : layout.java) agar dapat menghubungkan antara
activity satu dengan yang lain. Sedangkan Fragment yaitu salah satu
komponen antar muka (user interface) yang merupakan sebuah bagian dari
Activity, dapat disebut juga dengan nama Sub-Activity. Dalam satu
Activity juga sebuah Fragment dapat diganti, ditambahkan dan dihapus,
dan juga bersifat reusable, yang artinya dapat digunakan kembali sesuai
kebutuhan.

3. Jelaskan siklus hidup dari Fragment.


Jawab :
Fragment berisi method callback mirip dengan Activity, seperti onCreate
(), onStart (), onPause (), dan OnStop (). Siklus
hidup dari fragment berhubungan dengan siklus hidup Activity, berikut
tahapan siklus hidup fragment yang berkaitan dengan siklus hidup dari
activity.
1. onPause() dipanggil di dalam fragment.
2. onPause() dipanggil di dalam activity
3. onSaveInstanceState () digunakan untuk menyimpan informasi
fragment dalam objek Bundle.
4. onSaveInstanceState () digunakan untuk menyimpan informasi activity
dalam objek Bundle.
5. onStop() dipanggil di dalam fragment.
6. onStop() dipanggil di dalam Activity.
7. onDestroyView () dipanggil setelah hirarki view fragment tidak lagi
dapat diakses.
8. onDestroy () dipanggil setelah fragment tidak digunakan, masih ada
objek java melekat pada activity.
9. onDestroy () dipanggil di dalam activity.
10. onDetach () fragment tidak terikat dengan activity, dan tidak memiliki
hirarki view lagi.
[AdSense-A]

4. Modifikasi program yang sudah dibuat dengan menambahkan menu About


pada BottomNavigationView sehingga ketika menu tersebut dipilih akan
menampilkan Fragment yang berisi TextView yang menampilkan nim dan
nama Anda, seperti Gambar berikut.

Kode Program ( layout/xml dan .Java)


// tulis kode programnya disini
fragment_about.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
tools:context=".AboutFragment">

<!-- TODO: Update blank fragment layout -->

<TextView
android:id="@+id/nim"
android:layout_width="301dp"
android:layout_height="53dp"
android:layout_marginTop="180dp"
android:layout_marginEnd="30dp"
android:gravity="center_vertical"
android:text="@string/nim"
android:textSize="30sp"
android:textStyle="bold" />

<TextView
android:id="@+id/nama"
android:layout_width="301dp"
android:layout_height="61dp"
android:layout_marginTop="250dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="@string/nama"
android:textSize="30sp"
android:textStyle="bold" />

</FrameLayout>

MainActivity.java
package com.example.latihanfragment;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;

import
com.google.android.material.bottomnavigation.BottomNavigationVie
w;

public class MainActivity extends AppCompatActivity {


BottomNavigationView bottomNavigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

getFragmentPage(new HomeFragment());

bottomNavigationView=findViewById(R.id.bottom_navigation);

bottomNavigationView.setOnNavigationItemSelectedListener(new
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull
MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.menu_home:
//Toast.makeText(MainActivity.this,
"Anda Memilih Home", Toast.LENGTH_SHORT).show();
getFragmentPage(new HomeFragment());
break;

case R.id.menu_favorite:
//Toast.makeText(MainActivity.this,
"Anda Memilih Favorite", Toast.LENGTH_SHORT).show();
getFragmentPage(new FavoriteFragment());
break;

case R.id.menu_about:
//Toast.makeText(MainActivity.this,
"Anda Memilih Favorite", Toast.LENGTH_SHORT).show();
getFragmentPage(new AboutFragment());
break;
}
return true;
}
});
}

private boolean getFragmentPage(Fragment fragment)


{if (fragment != null){

getSupportFragmentManager().beginTransaction().replace(R.id.mai
n_container, fragment) .commit();return true;
}return false; }
}

5. Jelaskan apakah fungsi dari RecyclerView dan tunjukkan potongan kode


xml pada modul sebelumnya yang berfungsi untuk membuat
RecyclerView.
Jawab :
RecyclerView adalah salah satu komponen ui di Android yang sering
digunakan dalam sebuah aplikasi. Karena komponen ini digunakan untuk
membuat sebuah app yang didalamnya terdapat list atau daftar yang dapat
discroll ke atas ke bawah atau ke kanan ke kiri.
Contoh Potongan Kode xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rcv_team"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

6. Jelaskan fungsi dari CardView dan tunjukkan potongan kode xml pada
modul ini yang berfungsi untuk membuat CardView.List
Jawab :
CardView merupakan view paketan dari Material Design — diperkenalkan
pada Android Versi Lolipop. Bentuk view ini biasa digunakan untuk
pembungkusan data (sepaket data — beberapa view) yang ditandai dengan
tampilan view nya yang memiliki drop shadow (elevation) dan corner
radius. Adapun CardView ini merupakan subclass dari FrameLayout.
Contoh potongan kode xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_team"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center">

<RelativeLayout
android:layout_width="336dp"
android:layout_height="134dp"
android:layout_marginStart="45dp"
android:orientation="horizontal">

<ImageView
android:id="@+id/img_logo"
android:layout_width="87dp"
android:layout_height="match_parent"
android:contentDescription="@string/cont_desc_logo"
app:srcCompat="@mipmap/ic_launcher_round" />

<LinearLayout
android:layout_width="249dp"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/text_no"
android:layout_width="72dp"
android:layout_height="wrap_content"
android:text="@string/no"
android:textSize="20sp" />

<TextView
android:id="@+id/text_team"
android:layout_width="247dp"
android:layout_height="80dp"
android:text="@string/team"
android:textSize="15sp" />

</LinearLayout>

</RelativeLayout>
</androidx.cardview.widget.CardView>
7. Apakah fungsi dari potongan kode program berikut yang terdapat pada
modul ini.
Potongan Kode HomeFragment.java
recyclerAdapterTeam.setItemClickListener(new ItemClickListener()
{
@Override
public void onClick(View view, int position) {
Toast.makeText(getActivity(),
teamArrayList.get(position).getName(),
Toast.LENGTH_SHORT).show();
}
});
Jawab :
Fungsi nya Ketika di klik ListView tersebut akan ada pemberitahuan atau
muncul Text. Dengan posisi yang sudah ditentukan di ListView

8. Kembangkan aplikasi pada modul ini, sehingga ketika salah satu item
dari gambar team dipilih akan menampilkan sebuah activity baru untuk
menampilakn deskripsi dari team.
Kode Program ( layout/xml dan .Java)
// tulis kode programnya disini
City.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".City">

<TextView
android:id="@+id/textView4"
android:layout_width="354dp"
android:layout_height="364dp"
android:layout_marginStart="54dp"
android:layout_marginTop="63dp"
android:layout_marginEnd="54dp"
android:layout_marginBottom="156dp"

android:text="@string/commonly_known_as_city_is_a_football_club_
in_manchester_england_founded_in_1880_as_st_mark_s_west_gorton_i
t_became_ardwick_association_football_club_in_1887_and_mancheste
r_city_in_1894_the_club_s_home_ground_is_the_city_of_manchester_
stadium_in_east_manchester_to_which_it_moved_in_2003_having_play
ed_at_maine_road_since_1923"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView4" />

<ImageView
android:id="@+id/imageView4"
android:layout_width="247dp"
android:layout_height="156dp"
android:layout_marginStart="97dp"
android:layout_marginEnd="97dp"
android:contentDescription="@string/todo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.444"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.176"
app:srcCompat="@drawable/img_city" />
</androidx.constraintlayout.widget.ConstraintLayout>

City.java
package com.example.latihanfragment;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class City extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_city);
}
}

RecyclerAdapterTeam.java
package com.example.latihanfragment;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;

import java.util.ArrayList;
import java.util.List;

public class RecyclerAdapterTeam extends


RecyclerView.Adapter<RecyclerAdapterTeam.ViewHolder> {
private ArrayList<Team> teamArrayList;
private Context context;
private ItemClickListener itemClickListener;

public RecyclerAdapterTeam(Context context, ArrayList<Team>


teamArrayList) {
this.teamArrayList = teamArrayList;
this.context = context;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup
viewGroup, int i) {
View view =
LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.li
st_team, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder,
int i) {
int no = i + 1;
viewHolder.txtNo.setText(String.valueOf(no));

viewHolder.txtTeam.setText(teamArrayList.get(i).getName());
viewHolder.imgLogo.setImageResource(Integer.parseInt(teamArrayLi
st.get(i).getLogo()));
}

@Override
public int getItemCount() {
return teamArrayList != null ? teamArrayList.size() : 0;
}

public void setItemClickListener(ItemClickListener


itemClickListener) {
this.itemClickListener = itemClickListener;
}

public class ViewHolder extends RecyclerView.ViewHolder


implements View.OnClickListener {
TextView txtTeam, txtNo;
ImageView imgLogo;

public ViewHolder(@NonNull View itemView) {


super(itemView);
txtNo = itemView.findViewById(R.id.text_no);
txtTeam = itemView.findViewById(R.id.text_team);
imgLogo = itemView.findViewById(R.id.img_logo);
itemView.setOnClickListener(this);
}

@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position == 0) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
Barca.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if (position == 1) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
Madrid.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if(position == 2) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
Munchen.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if(position == 3) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, City.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if(position == 4) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
United.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if(position == 5) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
Chelsea.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if(position == 6) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
Milan.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
} else if(position == 7) {
Toast.makeText(context, "position" + position,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,
Arsenal.class);
intent.putExtra("name",
teamArrayList.get(position).getName());
context.startActivity(intent);
}
}
}
}

Anda mungkin juga menyukai