有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java编辑和保存已传递给其他活动的ArrayList<>

我正在制作一个飞盘记录器,有一个ArrayListTeam对象。每个Team都有ArrayListPlayer对象。一切都正确地使用Serializable来发送Intent

在我的主要活动中,我将在ListView中显示Team对象的列表,以及添加另一个Team的选项(只需要一个名称)。一旦选择了Team,我就使用Intent将对象传递给另一个活动。在第二个活动中,我让它显示Player对象的列表,并在传递的列表中输入另一个玩家对象的字段

当我返回到主活动并返回add Player活动时,我添加的内容就消失了

我不能使用static,因为显然有多个Team对象。我认为把改变后的ArrayList传回去可能会奏效,但这似乎有点蹩脚、耗时,而且令人沮丧

Android Studio中有没有内置的方式来实现这一点,还是我自己

注意:我没有按照评论中的建议使用SQLite

这里没有太多可以展示的东西,但我猜是这样的:

主要活动。爪哇

private static ArrayList<Team> listOfTeams = new ArrayList<>();
private static ArrayList<Game> listOfGames = new ArrayList<>();
private ListView gameList, teamList;

.....

teamList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Team t = (Team)teamList.getItemAtPosition(position);
        viewTeam(t);
    }
});

.....

//Item select in teamList. Start the TeamViewActivity
public void viewTeam(Team t)
{
    Intent i = new Intent(this, TeamViewActivity.class);
    i.putExtra("teamView",t);
    startActivity(i);
}

TeamViewActivity。爪哇

private Team team;
private ListView rosterList;

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

    rosterList = (ListView) findViewById(R.id.playerList);

    Intent i = getIntent();
    Bundle extras = i.getExtras();

    if(extras!=null)
    {
        if(extras.get("teamView")!=null)
        {
            team = (Team) extras.get("teamView");
        }
    }

    populateRosterList(team.getRoster());
}

public void addPlayerToRoster(View view)
{
    String checkFirst = ((EditText) findViewById(R.id.firstText)).getText().toString();
    String checkLast = ((EditText) findViewById(R.id.lastText)).getText().toString();
    String checkNumber = ((EditText) findViewById(R.id.numberText)).getText().toString();

    if(!checkNumber.equals(""))
    {
        team.addPlayer(checkFirst, checkLast, Integer.parseInt(checkNumber));

        ((EditText) findViewById(R.id.firstText)).setText("");
        ((EditText) findViewById(R.id.lastText)).setText("");
        ((EditText) findViewById(R.id.numberText)).setText("");

        populateRosterList(team.getRoster());
    }
}

public void returnToMain(View view)
{
    Intent i = new Intent(this, MainActivity.class);
    i.putExtra("teamView", team);
    startActivity(i);
}

private void populateRosterList(ArrayList<Player> list)
{
    ArrayAdapter<Player> adapter = new ArrayAdapter<>(this,
            R.layout.activity_list, R.id.genericText, list);
    rosterList.setAdapter(adapter);
}

共 (0) 个答案