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

Cách sắp xếp mảng JSON Volley theo ID trên Android

Giới thiệu

Mở rộng từ bài trước, ví dụ này parse mảng JSON thành danh sách đối tượng UserInfo (chứa id, name) và sắp xếp theo ID tăng dần.

Các bước thực hiện

Bước 1: Project & Dependency Volley

Thêm implementation 'com.android.volley:volley:1.2.1' vào build.gradle.

Bước 2: Giao diện

<TextView
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textSize="20sp" />

Bước 3: Model & Logic (MainActivity.java)

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private RequestQueue queue;
    private static final String URL = "https://mocky.io/v2/597c41390f0000d002f4dbd1";

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

        textView = findViewById(R.id.text);
        queue = Volley.newRequestQueue(this);

        StringRequest request = new StringRequest(Request.Method.GET, URL,
            response -> {
                try {
                    JSONObject obj = new JSONObject(response);
                    JSONArray array = obj.getJSONArray("users");
                    List list = new ArrayList<>();

                    for (int i = 0; i < array.length(); i++) {
                        JSONObject user = array.getJSONObject(i);
                        list.add(new UserInfo(
                            user.getString("id"),
                            user.getString("name")
                        ));
                    }

                    // Sắp xếp theo ID
                    Collections.sort(list, (o1, o2) -> o1.id.compareTo(o2.id));

                    UserInfo first = list.get(0);
                    textView.setText("ID: " + first.id + "\nName: " + first.name);
                } catch (Exception e) {
                    e.printStackTrace();
                    textView.setText("Lỗi: " + e.getMessage());
                }
            },
            error -> textView.setText("Lỗi mạng")
        );

        queue.add(request);
    }

    // Inner class model
    private static class UserInfo {
        String id, name;
        UserInfo(String id, String name) { this.id = id; this.name = name; }
    }
}

Bước 4: Quyền Internet

<uses-permission android:name="android.permission.INTERNET" />

Giải thích

  • Tạo class UserInfo đóng gói id và name.
  • Dùng Collections.sort() với Comparator lambda so sánh chuỗi ID.
  • Hiển thị phần tử đầu tiên sau khi sắp xếp.