即使在添加元素后 ArrayList 也显示为空

时间:2021-05-27 06:12:38

标签: java android arraylist

从我的 API 接收数据并将其填充到 ArrayList 存储的对象中后,我正在填充我的 ArrayList,但是当我记录 ArrayList 的大小时,它显示为空.

这是我的代码:

public class MainActivity extends AppCompatActivity {

private RequestQueue queue;
private static ArrayList<Team> teams;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    RecyclerView recyclerView = findViewById(R.id.homeRecyclerView);

    this.teams = new ArrayList<>();

    queue = Volley.newRequestQueue(this);
    TeamNamesAdapter teamNamesAdapter = new TeamNamesAdapter(teams);

    parseJSON();

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(teamNamesAdapter);

    Log.i("Info",String.valueOf(teams.size()));

}


private void parseJSON(){
    String url = "http://192.168.0.174:8080/team";

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest
            (Request.Method.GET, url, null, response -> {

                try {

                    for(int i=0;i<response.length();i++){
                        JSONObject teamDetails = response.getJSONObject(i);
                        Team team = new Team();
                        team.setId(Long.parseLong(teamDetails.getString("id")));
                        team.setTeamName(teamDetails.getString("teamName"));
                        team.setTotalMatches(Long.parseLong(teamDetails.getString("totalMatches")));
                        team.setTotalWins(Long.parseLong(teamDetails.getString("totalWins")));

                        this.teams.add(team);
                        
                        Log.i("Info","Added team "+team.getTeamName()+" successfully");
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }, error -> Log.i("ERROR","Couldn't parse JSON"));

    queue.add(jsonArrayRequest);

}}

我的 API 正在工作,因为我能够记录正在创建但未存储在列表中的每个团队对象。

1 个答案:

答案 0 :(得分:0)

您可以删除 this.teams = new ArrayList<>(); 并在开头添加初始值,因为它是静态的,private static ArrayList<Team> teams = new ArrayList<>();