Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅打印最后添加的项目 ListData=newarraylist(); 响应对象=null; JSONObject documentRoot=新的JSONObject(结果); JSONArray documentChild=documentRoot.getJSONArray(“Main”); JSONArray allergyArray=null; JSONArray vitalsArray=null; 对于(int i=0;i_Java - Fatal编程技术网

Java 仅打印最后添加的项目 ListData=newarraylist(); 响应对象=null; JSONObject documentRoot=新的JSONObject(结果); JSONArray documentChild=documentRoot.getJSONArray(“Main”); JSONArray allergyArray=null; JSONArray vitalsArray=null; 对于(int i=0;i

Java 仅打印最后添加的项目 ListData=newarraylist(); 响应对象=null; JSONObject documentRoot=新的JSONObject(结果); JSONArray documentChild=documentRoot.getJSONArray(“Main”); JSONArray allergyArray=null; JSONArray vitalsArray=null; 对于(int i=0;i,java,Java,当我尝试迭代并打印结果时,只打印最后添加的项 List < Response > Data = new ArrayList < Response > (); Response object = null; JSONObject documentRoot = new JSONObject(result); JSONArray documentChild = documentRoot.getJSONArray("Main"); JSONArray allergyArray

当我尝试迭代并打印结果时,只打印最后添加的项

List < Response > Data = new ArrayList < Response > ();
Response object = null;

JSONObject documentRoot = new JSONObject(result);
JSONArray documentChild = documentRoot.getJSONArray("Main");
JSONArray allergyArray = null;
JSONArray vitalsArray = null;

for (int i = 0; i < documentChild.length(); i++) {
    child = documentChild.getJSONObject(i);
    if (Condition1) {
        allergyArray = child.getJSONArray("Allergy");
    } else if {
        vitalsArray = child.getJSONArray("Vitals");
    }
}

object = new Response(); // POJO class

if (null != allergyArray) {
    for (int i = 0; i < allergyArray.length(); i++) {
        object.setCap(allergyArray.getJSONObject(i).getString("Cap"));
        object.setRea(allergyArray.getJSONObject(i).getString("Rea"));
    }
}

if (null != vitalsArray) {
    for (int i = 0; i < vitalsArray.length(); i++) {
        object.setName(vitalsArray.getJSONObject(i).getString("Name"));
        object.setMedic(vitalsArray.getJSONObject(i).getString("Medic"));
    }
}

Data.add(object);
public void onLoadComplete(列表项){
对于(int i=0;i

为什么我的列表对象传递给onLoadComplete函数只包含添加到POJO类的最后一个项。

在循环中,您在每次迭代中设置同一对象上的值(cap、rea、name和medic),这意味着迭代完成后只设置最后一个值

对于需要创建新对象的每个值。这是一个基本示例,需要添加一些安全检查:

public void onLoadComplete(List < Response > item) {    
    for (int i = 0; i < item.size(); i++) {
        Log.d("Get", item.get(i).getCap()); // I get only the last item which is added.
    }      
}
if(null!=allergyArray&&null!=VitalArray)
{
对于(int i=0;i
Java是面向对象的,不像PHP那样是程序化的。您需要每次创建一个新的
响应
实例,而不是重复使用同一个实例。@BalusC:我尝试在相应的for循环中创建新实例。。。对象=新响应();您必须创建新的
响应
,然后调用
Data.add(object)
,都在
for
循环中。如果JSON库来自www.JSON.org,则
getJSONArray
永远不会返回
null
。请参阅和。我们不需要将这些循环合并为一个右循环。。。。我的意思是,我仍然可以将其分开,并在每个循环中创建新实例…我假设数据是相关的,但如果列表用于创建单独的对象,只需在循环中创建对象,并将其存储在
数据中
最后一个问题,我不理解您之前的评论。。。。它是一个列表对象,我将传递给函数。如果要分别使用
allergyArray
VitalArray
中的对象填充数组,那么应该在两个for循环中执行,如果构建基于两个数组的对象,则需要在一个循环中执行。
if (null != allergyArray && null != vitalsArray)
{
    for (int i = 0; i < allergyArray.length() && i < vitalsArray.length(); ++i)
    {
        object = new Response(); // POJO class
        object.setCap(allergyArray.getJSONObject(i).getString("Cap"));
        object.setRea(allergyArray.getJSONObject(i).getString("Rea"));
        object.setName(vitalsArray.getJSONObject(i).getString("Name"));
        object.setMedic(vitalsArray.getJSONObject(i).getString("Medic"));

        Data.add(object);
    }
}