java编辑和保存已传递给其他活动的ArrayList<>
我正在制作一个飞盘记录器,有一个ArrayList
个Team
对象。每个Team
都有ArrayList
个Player
对象。一切都正确地使用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) 个答案