Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में वॉली JSON ऐरे में एब्स्ट्रैक्ट लिस्ट का उपयोग कैसे करें?

एंड्रॉइड में Volley और AbstractList से JSON ऐरे पार्स करें

यह ट्यूटोरियल दिखाता है कि Volley लाइब्रेरी का उपयोग करके JSON ऐरे डेटा कैसे प्राप्त करें, उसे कस्टम ऑब्जेक्ट्स में पार्स करें, और AbstractList (via ArrayList) में स्टोर करके सॉर्ट करें।

निर्भरताएं (build.gradle)

dependencies {
    implementation 'com.android.volley:volley:1.2.1'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.code.gson:gson:2.10.1' // वैकल्पिक, पार्सिंग के लिए
}

चरण 1: प्रोजेक्ट बनाएं

एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं और ऊपर दी गई निर्भरताएं जोड़ें।

चरण 2: लेआउट (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/resultText"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="16sp"
        android:padding="16dp"
        android:background="#F5F5F5"
        android:text="लोड हो रहा है..."/>

</LinearLayout>

चरण 3: डेटा मॉडल

public class UserInfo implements Comparable {
    public final String id;
    public final String name;
    public final String email;

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

    @Override
    public int compareTo(UserInfo other) {
        // ID द्वारा सॉर्ट (संख्यात्मक)
        try {
            return Integer.compare(Integer.parseInt(this.id), Integer.parseInt(other.id));
        } catch (NumberFormatException e) {
            return this.id.compareTo(other.id); // फॉलबैक: स्ट्रिंग तुलना
        }
    }

    @Override
    public String toString() {
        return "ID: " + id + ", नाम: " + name + ", ईमेल: " + email;
    }
}

चरण 4: मेन एक्टिविटी (src/MainActivity.java)

package com.example.volleyabstractlist;

import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
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.JsonObjectRequest;
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.List;

public class MainActivity extends AppCompatActivity {

    private TextView resultText;
    private RequestQueue queue;
    private static final String URL = "https://mocki.io/v1/..."; // टेस्ट API एंडपॉइंट

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

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

        // AbstractList के रूप में ArrayList उपयोग करें
        final AbstractList userList = new ArrayList<>();

        // JsonObjectRequest उपयोग करें (StringRequest के बजाय बेहतर)
        JsonObjectRequest request = new JsonObjectRequest(
            Request.Method.GET, URL, null,
            new Response.Listener() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray usersArray = response.getJSONArray("users");
                        
                        for (int i = 0; i < usersArray.length(); i++) {
                            JSONObject userObj = usersArray.getJSONObject(i);
                            String id = userObj.getString("id");
                            String name = userObj.getString("name");
                            String email = userObj.optString("email", "N/A"); // वैकल्पिक फील्ड
                            
                            userList.add(new UserInfo(id, name, email));
                        }

                        // AbstractList पर Collections.sort() काम करता है क्योंकि ArrayList Comparable लागू करता है
                        Collections.sort(userList);

                        // परिणाम प्रदर्शित करें
                        StringBuilder sb = new StringBuilder("कुल यूजर्स: " + userList.size() + "\n\n");
                        for (int i = 0; i < Math.min(5, userList.size()); i++) {
                            sb.append(userList.get(i).toString()).append("\n");
                        }
                        if (userList.size() > 5) {
                            sb.append("\n... और ").append(userList.size() - 5).append(" यूजर्स");
                        }
                        
                        resultText.setText(sb.toString());

                    } catch (JSONException e) {
                        Log.e("VOLLEY", "JSON पार्स त्रुटि", e);
                        resultText.setText("JSON पार्स त्रुटि: " + e.getMessage());
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("VOLLEY", "नेटवर्क त्रुटि", error);
                    resultText.setText("नेटवर्क त्रुटि: " + error.getMessage());
                }
            }
        );

        // रीट्राय पॉलिसी सेट करें
        request.setRetryPolicy(new com.android.volley.DefaultRetryPolicy(
            10000, // टाइमआउट ms
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
        ));

        queue.add(request);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (queue != null) queue.cancelAll(this); // लीक रोकें
    }
}

चरण 5: मैनिफेस्ट परमिशन (AndroidManifest.xml)

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

AbstractList vs ArrayList vs List

नोट: ArrayList पहले से ही AbstractList को एक्सटेंड करता है, इसलिए AbstractList<UserInfo> list = new ArrayList<>() वैध है लेकिन List<UserInfo> list = new ArrayList<>() अधिक सामान्य और अनुशंसित है।

Gson के साथ सरल पार्सिंग (अनुशंसित)

// UserInfo क्लास में @SerializedName एनोटेशन जोड़ें
// फिर:
Type listType = new TypeToken>(){}.getType();
List users = new Gson().fromJson(usersArray.toString(), listType);
Collections.sort(users);

चरण 6: टेस्ट करें

  1. ऐप चलाएं (इंटरनेट कनेक्शन आवश्यक)
  2. JSON डेटा लोड होगा, पार्स होगा, सॉर्ट होगा और प्रदर्शित होगा
  3. एरर हैंडलिंग: नेटवर्क एरर, JSON पार्स एरर, खाली डेटा

एंड्रॉइड में वॉली JSON ऐरे में एब्स्ट्रैक्ट लिस्ट का उपयोग कैसे करें?

  1. Android Toolbar में SearchView का उपयोग कैसे करें? Android Toolbar में SearchView का उपयोग कैसे करें?

    Android Toolbar/ActionBar में SearchView जोड़कर ListView फ़िल्टर करना टूलबार में सर्च आइकन जोड़कर ListView डेटा को रियल-टाइम फ़िल्टर करने का पूरा उदाहरण। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट में Toolbar और ListView res/layout/activity_main.xml: <?xml ve

  1. Android ऐप में Volley लाइब्रेरी से JSON कैसे पार्स करें? Android ऐप में Volley लाइब्रेरी से JSON कैसे पार्स करें?

    Volley लाइब्रेरी से JSON पार्सिंग यह उदाहरण दर्शाता है कि Google की Volley लाइब्रेरी का उपयोग करके नेटवर्क से JSON डेटा कैसे प्राप्त करें और पार्स करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project से प्रोजेक्ट बनाएं। चरण 2: build.gradle में Volley डिपेंडेंसी जोड़ें dependencie

  1. एंड्रॉइड में JSON एरे को कैसे इटरेट करें एंड्रॉइड में JSON एरे को कैसे इटरेट करें

    org.json लाइब्रेरी का उपयोग करके JSON एरे पार्स करना और इटरेट करना एंड्रॉइड में बिल्ट-इन org.json पैकेज (JSONArray, JSONObject) का उपयोग करके JSON डेटा पार्स किया जा सकता है। यह उदाहरण एक JSON स्ट्रिंग से एरे निकालकर उसे लूप के माध्यम से प्रोसेस करना दिखाता है। चरण 1: नया प्रोजेक्ट बनाएं Android St

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
प्रकारविवरण
List<T>इंटरफेस - सबसे सामान्य, लचीला
AbstractList<T>आधार अमूर्त वर्ग - कस्टम लिस्ट कार्यान्वयन के लिए
ArrayList<T>कॉन्क्रीट कार्यान्वयन - डायनामिक ऐरे, रैंडम एक्सेस तेज
LinkedList<T>कॉन्क्रीट कार्यान्वयन - डबल लिंक्ड लिस्ट, इन्सर्शन/डिलीशन तेज