سؤال

لدي ArrayList أستخدمه داخل ArrayAdapter لـ ListView.أحتاج إلى أخذ العناصر الموجودة في القائمة وتحويلها إلى JSONArray لإرسالها إلى واجهة برمجة التطبيقات.لقد بحثت في كل مكان، ولكن لم أجد أي شيء يشرح كيف يمكن أن يعمل هذا، سيكون موضع تقدير أي مساعدة.

تحديث - الحل

إليك ما انتهى بي الأمر إلى حل المشكلة.

كائن في ArrayList:

public class ListItem {
    private long _masterId;
    private String _name;
    private long _category;

    public ListItem(long masterId, String name, long category) {
        _masterId = masterId;
        _name = name;
        _category = category;
    }

    public JSONObject getJSONObject() {
        JSONObject obj = new JSONObject();
        try {
            obj.put("Id", _masterId);
            obj.put("Name", _name);
            obj.put("Category", _category);
        } catch (JSONException e) {
            trace("DefaultListItem.toString JSONException: "+e.getMessage());
        }
        return obj;
    }
}

هنا كيف قمت بتحويله:

ArrayList<ListItem> myCustomList = .... // list filled with objects
JSONArray jsonArray = new JSONArray();
for (int i=0; i < myCustomList.size(); i++) {
        jsonArray.put(myCustomList.get(i).getJSONObject());
}

و الإخراج:

[{"Name":"Name 1","Id":0,"Category":"category 1"},{"Name":"Name 2","Id":1,"Category":"category 2"},{"Name":"Name 3","Id":2,"Category":"category 3"}]

آمل أن يساعد هذا شخص ما في يوم من الأيام!

هل كانت مفيدة؟

المحلول

إذا قرأت مُنشئات JSONArray بشكل صحيح ، فيمكنك بناؤها من أي مجموعة (arrayList هي فئة فرعية من المجموعة) مثل: Genacodicetagpre

المراجع:

نصائح أخرى

استخدم مكتبة Gson لتحويل ArrayList إلى JsonArray.

Genacodicetagpre

نظرًا لأن شخصًا ما اكتشف أن OP يريد تحويل القائمة المخصصة إلى رمز علامة التشفير العام وليس رمز العلامة ، يجب أن تكون الإجابة الصحيحة على النحو التالي: Genacodicetagpre

Genacodicetagpre

أعرف أنه تمت الإجابة عليه بالفعل ، ولكن يوجد حل أفضل هنا ، استخدم هذا الرمز: Genacodicetagpre

بهذه الطريقة يمكنك الوصول إلى المتغيرات من فئة دون كتابتها يدويًا ..

أسرع وأفضل .. أتمنى أن يساعدك هذا.

في صحتك.: د

أضف إلى gradle الخاص بك:

implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

يتحول ArrayList ل JsonArray

JsonArray jsonElements = (JsonArray) new Gson().toJsonTree(itemsArrayList);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top