为什么Setter Getter类变量只从JSON, android,recyclerView中获取最后一个对象



我只是想知道为什么我的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"数组列表中包含的所有对象。

最新更新