Найти недостающее значение из ArrayList в Java - PullRequest
1 голос
/ 26 марта 2020

У меня проблема с отсутствующими значениями из ArrayList. Когда я провожу listCartItemValues.toString(), результаты верны в соответствии с существующими данными. Но когда я устанавливаю listCartItemValues в Model DataItemCart, то тост, одно из значений отсутствует, это Starlight.

Мой API:

{
    "data": [
        {
            "cart_item_values": [
                {
                    "attribute_name": "color",
                    "attribute_value": "Starlight"
                },
                {
                    "attribute_name": "size",
                    "attribute_value": "XL"
                }
            ]
        },
        {
            "cart_item_values": [
                {
                    "attribute_name": "size",
                    "attribute_value": "10"
                }
            ]
        }
    ],
}

Мой код для получения cart_item_values:

private List<CartItemValuesItem> listCartItemValues;

for (int a = 0; a < data.length(); a++) {

    JSONObject dataJSONObject = data.getJSONObject(a);

    final DataItemCart dataItemCart = new DataItemCart();
    final CartItemValuesItem cartItemValuesItem = new CartItemValuesItem();

    JSONArray arrayCartItemValues = dataJSONObject.optJSONArray("cart_item_values");

    for (int b = 0; b < arrayCartItemValues.length(); b++) {
        JSONObject cartItemJsonObject = arrayCartItemValues.optJSONObject(b);
        listCartItemValues = new ArrayList<>();

        cartItemValuesItem.setAttributeName(cartItemJsonObject.getString("attribute_name"));
        cartItemValuesItem.setAttributeValue(cartItemJsonObject.getString("attribute_value"));
        listCartItemValues.add(cartItemValuesItem);

        Toast.makeText(mContext, "value : "+ listCartItemValues.toString(), Toast.LENGTH_SHORT).show();
        // this list contain Starlight, XL, and 10
    }

    dataItemCart.setCartItemValues(listCartItemValues);

    Toast.makeText(mContext, "data : "+ dataItemCart.getCartItemValues.toString(), Toast.LENGTH_SHORT).show();
    // but this list contain XL and 10. Starlight is missing
}

Как найти отсутствующее значение из ArrayList и ввести недостающее значение в dataItemCart.setCartItemValues?

1 Ответ

0 голосов
/ 26 марта 2020

Переместить "final DataItemCart dataItemCart = new DataItemCart ();" вне первого Для L oop.

Move "listCartItemValues ​​= new ArrayList <> (); " вне секунды Для L oop.

Вот модифицированный код.

private List<CartItemValuesItem> listCartItemValues;
    final DataItemCart dataItemCart = new DataItemCart();
    for (int a = 0; a < data.length(); a++) {

        JSONObject dataJSONObject = data.getJSONObject(a);

        final CartItemValuesItem cartItemValuesItem = new CartItemValuesItem();

        JSONArray arrayCartItemValues = dataJSONObject.optJSONArray("cart_item_values");
        listCartItemValues = new ArrayList<>();

        for (int b = 0; b < arrayCartItemValues.length(); b++) {
            JSONObject cartItemJsonObject = arrayCartItemValues.optJSONObject(b);
            cartItemValuesItem.setAttributeName(cartItemJsonObject.getString("attribute_name"));
            cartItemValuesItem.setAttributeValue(cartItemJsonObject.getString("attribute_value"));
            listCartItemValues.add(cartItemValuesItem);

            Toast.makeText(mContext, "value : "+ listCartItemValues.toString(), Toast.LENGTH_SHORT).show();
            // this list contain Starlight, XL, and 10
        }

        dataItemCart.setCartItemValues(listCartItemValues);

        Toast.makeText(mContext, "data : "+ dataItemCart.getCartItemValues.toString(), Toast.LENGTH_SHORT).show();
        // but this list contain XL and 10. Starlight is missing
    }
...