DESEMBER 2020
ii
Erma Susanti Modul 2. Komponen-komponen Dasar Android
51
BAB 3.
Kompetensi:
Style
Theme
Theme terkait dengan style yang dibuat khusus untuk activity dan
aplikasi pada file AndroidManifest.xml.
<application android:theme="@style/AppTheme">
Theme adalah style yang diaplikasikan pada activity yang ada atau
bahkan aplikasi yang ada.
Localization
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
Contoh:
android:onClick="showToast"
Apapun yang kita lihat pada layar merupakan view. Setiap elemen UI
yang kita lihat adalah view. Subclass dari view merupakan basic
building block dari UI yang terdiri dari class TextView, EditText, Button,
Menu, ScrollView, RecyclerView, ImageView, Group View
https://youtu.be/KxVhbhka7_c
Penggunaan Button
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
Navigasi
1. Back navigation
2. Hierarchical navigation
3. Navigation Drawer
Drawable
3.4. RecyclerView
Activity_main.xml
item_list_book.xml
<ImageView
android:id="@+id/imagePhoto"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.056"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.048"
tools:ignore="ContentDescription"
tools:srcCompat="@tools:sample/avatars" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/title"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/imagePhoto"
app:layout_constraintTop_toTopOf="@+id/imagePhoto"
/>
<TextView
android:id="@+id/tvAuthor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
<TextView
android:id="@+id/tvDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:maxLines="3"
android:text="@string/description"
app:layout_constraintStart_toEndOf="@+id/imagePhoto"
app:layout_constraintTop_toBottomOf="@+id/tvAuthor"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
strings.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">ProjectRecyclerView</string>
<string name="title">tvTitle</string>
<string name="author">tvAuthor</string>
<string name="description">tvDesc</string>
<string-array name="data_title">
<item>Sebuah Seni untuk Bersikap Bodo Amat</item>
<item>Nanti Kita Cerita Tentang Hari Ini</item>
<item>Detektif Conan 96</item>
<item>The Life Changing Magic Of Tidying Up</item>
<item>Dilan 2: Dia Adalah Dilanku Tahun 1991</item>
</string-array>
<string-array name="data_author">
<item>Mark Manson</item>
<item>Marchella Fp</item>
<item>Aoyama Gosho</item>
<item>Marie Kondo</item>
<item>Pidi Baiq</item>
</string-array>
<string-array name="data_description">
<item>"Selama beberapa tahun belakangan, Mark
Manson—melalui blognya yang sangat popular telah membantu
mengoreksi harapan-harapan delusional kita, baik mengenai
diri kita sendiri maupun dunia. Ia kini menuangkan buah
<string-array name="data_photo">
<item>https://cdn.gramedia.com/uploads/items/9786024526986_S
ebuah-Seni-Untuk-Bersikap-Bodo-Amat__w150_hauto.jpg</item>
<item>https://cdn.gramedia.com/uploads/items/9786024248215_N
anti-Kita-Cerita-Tentang-Hari-Ini__w150_hauto.jpg</item>
<item>https://cdn.gramedia.com/uploads/items/9786230005879_C
ov_Conan_96__w150_hauto.jpg</item>
<item>https://cdn.gramedia.com/uploads/items/9786022912446_T
he-Life-Changing-Magic-Of-Tidying-Up__w149_hauto.jpg</item>
<item>https://cdn.gramedia.com/uploads/items/9786027870994_d
ilan-1991__w149_hauto.jpg</item>
</string-array>
</resources>
book.java
package ermaweb.com.projectrecyclerview.model;
import android.os.Parcel;
import android.os.Parcelable;
@Override
public Book[] newArray(int size) {
return new Book[size];
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(title);
dest.writeString(description);
dest.writeString(author);
dest.writeString(photo);
}
}
ListBookAdapter.java
package ermaweb.com.projectrecyclerview.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import ermaweb.com.projectrecyclerview.R;
import ermaweb.com.projectrecyclerview.model.Book;
@Override
public void onBindViewHolder(@NonNull ListViewHolder
holder, int position) {
Book book = listBook.get(position);
Glide.with(holder.itemView.getContext())
.load(book.getPhoto())
.apply(new RequestOptions().override(300,
300))
.into(holder.imgPhotoBook);
holder.tvTitle.setText(book.getTitle());
holder.tvAuthor.setText(book.getAuthor());
holder.tvDesc.setText(book.getDescription());
holder.itemView.setOnClickListener((v -> {
onItemClickCallback.onItemClicked(listBook.get(holder.getAda
pterPosition()));
}));
}
@Override
public int getItemCount() {
return listBook.size();
}
MainActivity.java
package ermaweb.com.projectrecyclerview;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import
ermaweb.com.projectrecyclerview.adapter.ListBookAdapter;
import ermaweb.com.projectrecyclerview.model.Book;
import android.os.Bundle;
import android.widget.Toast;
import java.util.ArrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rvBook = findViewById(R.id.rv_book);
rvBook.setHasFixedSize(true);
list.addAll(getList());
showRecyclerList();
}
listBookAdapter.setOnItemClickCallback((data)->{
listBook.add(book);
}
return listBook;
}
}
https://youtu.be/3dHUDBg6j5A
Developers, Google.
https://developers.google.com/certification/associate-android-
developer/study-guide (diakses November 2020)
145
Smyth, Neil. 2016. Android Studio Development Essentials – Android
7 Edition,
https://www.ebookfrenzy.com/pdf_previews/AndroidStudioEssenti
alsA7Preview.pdf
146
147