Berikut ini adalah contoh minimal yang akan terlihat seperti gambar berikut.
Mulailah dengan aktivitas kosong. Anda akan melakukan tugas-tugas berikut untuk menambahkan RecyclerView. Yang perlu Anda lakukan adalah menyalin dan menempelkan kode di setiap bagian. Nanti Anda dapat menyesuaikannya sesuai dengan kebutuhan Anda.
- Tambahkan dependensi ke gradle
- Tambahkan file tata letak xml untuk aktivitas dan untuk baris RecyclerView
- Buat adaptor RecyclerView
- Inisialisasi RecyclerView dalam aktivitas Anda
Perbarui dependensi Gradle
Pastikan dependensi berikut ada di gradle.build
file aplikasi Anda :
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
Anda dapat memperbarui nomor versi ke apa pun yang terbaru . Gunakan compile
daripada implementation
jika Anda masih menggunakan Android Studio 2.x.
Buat tata letak aktivitas
Tambahkan RecyclerView
ke tata letak xml Anda.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/rvAnimals"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
Buat tata letak baris
Setiap baris di kita RecyclerView
hanya akan memiliki satu TextView
. Buat file sumber daya tata letak baru.
recyclerview_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:id="@+id/tvAnimalName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
Buat adaptor
The RecyclerView
perlu adaptor untuk mengisi pandangan di setiap baris dengan data Anda. Buat file java baru.
MyRecyclerViewAdapter.java
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
private List<String> mData;
private LayoutInflater mInflater;
private ItemClickListener mClickListener;
// data is passed into the constructor
MyRecyclerViewAdapter(Context context, List<String> data) {
this.mInflater = LayoutInflater.from(context);
this.mData = data;
}
// inflates the row layout from xml when needed
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.recyclerview_row, parent, false);
return new ViewHolder(view);
}
// binds the data to the TextView in each row
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String animal = mData.get(position);
holder.myTextView.setText(animal);
}
// total number of rows
@Override
public int getItemCount() {
return mData.size();
}
// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView myTextView;
ViewHolder(View itemView) {
super(itemView);
myTextView = itemView.findViewById(R.id.tvAnimalName);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
}
}
// convenience method for getting data at click position
String getItem(int id) {
return mData.get(id);
}
// allows clicks events to be caught
void setClickListener(ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
}
Catatan
- Meskipun tidak sepenuhnya diperlukan, saya menyertakan fungsionalitas untuk mendengarkan acara klik pada baris. Ini tersedia di yang lama
ListViews
dan merupakan kebutuhan umum. Anda dapat menghapus kode ini jika Anda tidak membutuhkannya.
Inisialisasi RecyclerView dalam Aktivitas
Tambahkan kode berikut ke aktivitas utama Anda.
MainActivity.java
public class MainActivity extends AppCompatActivity implements MyRecyclerViewAdapter.ItemClickListener {
MyRecyclerViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// data to populate the RecyclerView with
ArrayList<String> animalNames = new ArrayList<>();
animalNames.add("Horse");
animalNames.add("Cow");
animalNames.add("Camel");
animalNames.add("Sheep");
animalNames.add("Goat");
// set up the RecyclerView
RecyclerView recyclerView = findViewById(R.id.rvAnimals);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new MyRecyclerViewAdapter(this, animalNames);
adapter.setClickListener(this);
recyclerView.setAdapter(adapter);
}
@Override
public void onItemClick(View view, int position) {
Toast.makeText(this, "You clicked " + adapter.getItem(position) + " on row number " + position, Toast.LENGTH_SHORT).show();
}
}
Catatan
- Perhatikan bahwa aktivitas mengimplementasikan apa
ItemClickListener
yang kami tetapkan dalam adaptor kami. Ini memungkinkan kami untuk menangani acara klik baris di onItemClick
.
Jadi
Itu dia. Anda harus dapat menjalankan proyek Anda sekarang dan mendapatkan sesuatu yang mirip dengan gambar di atas.
Sedang terjadi
Menambahkan pembagi di antara baris
Anda dapat menambahkan pembagi sederhana seperti ini
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
layoutManager.getOrientation());
recyclerView.addItemDecoration(dividerItemDecoration);
Jika Anda menginginkan sesuatu yang sedikit lebih rumit, lihat jawaban berikut:
Mengubah warna baris saat klik
Lihat jawaban ini untuk cara mengubah warna latar belakang dan menambahkan Efek Riak ketika sebuah baris diklik.
Memperbarui baris
Lihat jawaban ini untuk cara menambah, menghapus, dan memperbarui baris.
Bacaan lebih lanjut