首页 > 解决方案 > 即使添加元素后 ArrayList 仍显示为空

问题描述

ArrayList在从我的 API 接收数据并将其填充到存储的对象中后,我正在填充我,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 正在工作,因为我能够记录正在创建但未存储在列表中的每个团队对象。

标签: javaandroidarraylist

解决方案


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


推荐阅读