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);
}
}