Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sắp xếp chuỗi (String) trên RecyclerView Android

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:

Cách sắp xếp chuỗi (String) trên RecyclerView Android

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

Cách sắp xếp chuỗi (String) trên RecyclerView Android