我只是想知道为什么我的Setter Getter类变量只从JSON中获得最后一个对象?它应该将所有json对象获取到setter getter变量中,以便它可以将其传输到recyclerview。
这是代码的一部分,我是一个乞丐,请帮助
JSONArray json = req
.getJSONArray("worldpopulation");
for (int i = 0; i < json.length(); i++) {
JSONObject jsonOb = json
.getJSONObject(i);
setterGetterClass = new SuperHeroes(jsonOb.getInt(Configg.TAG_rank),jsonOb.getString(Configg.TAG_country),jsonOb.getString(Configg.TAG_population),jsonOb.getString(Configg.TAG_flag));
Log.d("tag", setterGetterClass.getcountry().toString());
Log.d("show: ", setterGetterClass.toString());
}
Log.d("parseData: ", setterGetterClass.toString());
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
for循环迭代&每次将新的SuperHeroes
实例初始化为setterGetterClass
。因此,在最后一次迭代之后,它将保存最后一个JsobObject数据。试着
-
创建
ArrayList
。ArrayList<SuperHeroes> superHeroesList = new ArrayList<SuperHeroes>();
-
在你的
for
循环SuperHeroes superHeroes = new SuperHeroes(jsonOb.getInt(Configg.TAG_rank),jsonOb.getString(Configg.TAG_country),jsonOb.getString(Configg.TAG_population),jsonOb.getString(Configg.TAG_flag); superHeroesList.add(superHeroes);
现在superHeroesList
将拥有所有json对象
在for循环的每次迭代中设置"setterGetterClass"变量。当循环结束时,"setterGetterClass"将具有JSONArray的最后一个值。这就是每次得到最后一个值的原因。如果要获取所有值,则应该将它们添加到列表或类似的结构中。例如:
JSONArray json = req.getJSONArray("worldpopulation");
List<SuperHeroe> superHeroeList = new ArrayList<>();
for (int i = 0; i < json.length(); i++) {
SuperHeroe superHeroe = new SuperHeroe(jsonOb.getInt(Configg.TAG_rank),jsonOb.getString(Configg.TAG_country),jsonOb.getString(Configg.TAG_population),jsonOb.getString(Configg.TAG_flag));
superHeroeList.add(superHeroe);
}
那么你就有了"superHeroeList"数组列表中包含的所有对象。