Mục tiêu
Ví dụ này demo cách sắp xếp dữ liệu trong RecyclerView theo thứ tự alphabet (A-Z) bằng cách sử dụng Collections.sort() với Comparator tùy chỉnh.
Các bước thực hiện
Bước 1 & 2: Tạo project & thêm dependency RecyclerView
Chỉ cần thêm recyclerview-v7, không cần CardView.
Bước 3: Layout activity_main.xml
<RelativeLayout ...>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" />
</RelativeLayout>
Bước 4: MainActivity.java - Có DividerItemDecoration
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private StudentAdapter studentAdapter;
private List<StudentData> studentDataList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
studentAdapter = new StudentAdapter(studentDataList);
RecyclerView.LayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
// Thêm đường phân cách giữa các item
recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
recyclerView.setAdapter(studentAdapter);
prepareStudentData();
}
private void prepareStudentData() {
// Thêm dữ liệu giống các ví dụ trước...
// Sắp xếp theo tên
Collections.sort(studentDataList, new Comparator<StudentData>() {
@Override
public int compare(StudentData o1, StudentData o2) {
return o1.name.compareTo(o2.name);
}
});
}
}
Bước 5: StudentAdapter.java (đơn giản, không animation, không màu ngẫu nhiên)
class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.MyViewHolder> {
private List<StudentData> studentDataList;
public StudentAdapter(List<StudentData> studentDataList) {
this.studentDataList = studentDataList;
}
// ... onCreateViewHolder, onBindViewHolder (chỉ set text), getItemCount, MyViewHolder
}
Bước 6: Layout item đơn giản (LinearLayout ngang, 2 TextView chia đều)
<LinearLayout xmlns:android="..."
android:orientation="horizontal"
android:layout_width="match_parent"
android:weightSum="1"
android:layout_height="wrap_content">
<TextView android:id="@+id/name"
android:layout_width="0dp"
android:layout_weight="0.5"
android:gravity="center"
android:textSize="15sp"
android:layout_height="100dp" />
<TextView android:id="@+id/age"
android:layout_width="0dp"
android:layout_weight="0.5"
android:gravity="center"
android:textSize="15sp"
android:layout_height="100dp" />
</LinearLayout>
Bước 7: Model StudentData.java
class StudentData {
String name; int age;
public StudentData(String name, int age) { this.name=name; this.age=age; }
}
Kết quả
Dữ liệu hiển thị đã sắp xếp từ A-Z:

Cuộn xuống thấy tiếp:
