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

Cách sử dụng AbstractList với Volley JSONArray trong Android

Giới thiệu

Ví dụ này minh họa cách sử dụng AbstractList (thông qua ArrayList) để lưu trữ và sắp xếp dữ liệu JSON từ mạng bằng thư viện Volley.

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

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

Bước 3: Viết logic (src/MainActivity.java)

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    TextView textView;
    RequestQueue queue;
    String URL = "https://www.mocky.io/v2/597c41390f0000d002f4dbd1";

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text);
        final AbstractList<UserInfo> list = new ArrayList<>();
        queue = Volley.newRequestQueue(this);

        StringRequest request = new StringRequest(Request.Method.GET, URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject object = new JSONObject(response);
                            JSONArray array = object.getJSONArray("users");
                            for (int i = 0; i < array.length(); i++) {
                                JSONObject object1 = array.getJSONObject(i);
                                String name = object1.getString("name");
                                String id = object1.getString("id");
                                list.add(new UserInfo(name, id));
                            }
                            // Sắp xếp theo id
                            Collections.sort(list, new Comparator<UserInfo>() {
                                @Override
                                public int compare(UserInfo o1, UserInfo o2) {
                                    return o1.id.compareTo(o2.id);
                                }
                            });
                            // Hiển thị phần tử đầu tiên sau khi sắp xếp
                            textView.setText("id: " + list.get(0).id + "\nname: " + list.get(0).name);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d("error", error.toString());
                    }
                });

        queue.add(request);
    }

    private class UserInfo {
        String name, id;
        public UserInfo(String name, String id) {
            this.name = name;
            this.id = id;
        }
    }
}

Bước 4: Cấu hình AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.myapplication">
    <uses-permission android:name="android.permission.INTERNET" />
    <application ...>
        <activity android:name=".MainActivity">...</activity>
    </application>
</manifest>

Bước 5: Thêm dependency Volley trong build.gradle

dependencies {
    implementation 'com.android.volley:volley:1.1.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    // ... other dependencies
}

Chạy ứng dụng

Cần kết nối internet. Ứng dụng tải JSON, parse, lưu vào AbstractList, sắp xếp theo id và hiển thị item đầu tiên.

Cách sử dụng AbstractList với Volley JSONArray trong Android