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

Cách đảo ngược thứ tự ListView bằng Collections.reverse() Android

Giới thiệu

Ví dụ này demo cách sử dụng Collections.reverse() để đảo ngược thứ tự các phần tử trong ArrayList trước khi hiển thị lên ListView.

Bước 1 & 2: Tạo dự án và Giao diện

Giao diện có EditText nhập tên, nút Lưu, Làm mới và ListView.

Bước 3: MainActivity.java

package com.example.andy.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class MainActivity extends AppCompatActivity {
    EditText name;
    ArrayAdapter<String> arrayAdapter;
    ArrayList<String> array_list;
    Set<String> set = new HashSet<>();
    ListView listView;

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

        array_list = new ArrayList<>();
        name = findViewById(R.id.name);
        listView = findViewById(R.id.listView);

        findViewById(R.id.refresh).setOnClickListener(v -> {
            if (arrayAdapter != null) {
                arrayAdapter.notifyDataSetChanged();
                listView.invalidateViews();
                listView.refreshDrawableState();
            }
        });

        findViewById(R.id.save).setOnClickListener(v -> {
            String input = name.getText().toString();
            if (!input.isEmpty()) {
                set.add(input);
                array_list.clear();
                array_list.addAll(set);
                // QUAN TRỌNG: Đảo ngược thứ tự danh sách
                Collections.reverse(array_list);
                arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_list);
                listView.setAdapter(arrayAdapter);
                Toast.makeText(this, "Đã thêm", Toast.LENGTH_LONG).show();
            } else {
                name.setError("Nhập tên");
            }
        });
    }
}

Giải thích

  • Collections.reverse(List): Đảo ngược thứ tự các phần tử trong list in-place (thay đổi list gốc).
  • Phức độ thời gian: O(n).
  • Khác với Collections.sort() thì reverse không sắp xếp, chỉ đảo ngược vị trí.

Chạy ứng dụng

Cách đảo ngược thứ tự ListView bằng Collections.reverse() Android

Danh sách hiển thị theo thứ tự ngược lại so với thứ tự nhập vào.