我正在制作飞盘记录器并且有ArrayList
的Team
对象。每个Team
具有Player
对象的ArrayList
。一切正在使用Serializable
正确使用Intent
发送。编辑并保存已传递给另一个活动的ArrayList <>
在我的主要活动我显示Team
对象在ListView
列表,并可以选择添加另一个Team
(只有一个名字需要)。一旦选择了Team
,我将该对象传递给使用Intent
的另一个活动。在这第二个活动中,我显示了Player
对象的列表,并且有字段可将其他玩家对象输入到传递的列表中。
当我回到主要活动并回到添加Player
活动时,我所添加的内容已消失。
我不能使用static
,因为显然有多个Team
对象。我认为传回ArrayList
可以起作用,但这似乎有点跛脚,耗时且令人沮丧。
在Android Studio中有内置的方法可以做到这一点,还是我自己?
注:我没有使用SQLite作为在评论中建议
这里没有一大堆上显示这一点,但这里是我想:
MainActivity.java
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.java
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);
}
你能告诉我们你的代码吗? – ifly6
如果我理解正确,你可能会使用SQLite –