# HG changeset patch # User Xeli # Date 1313717391 -7200 # Node ID 4e4a579a60af19f627c7837c673a7e5b052cfa67 # Parent 92a7336043d63a971634b89989dbd78d95a06939 Fixed crash which occured when entering the teamselection menu for the second time diff -r 92a7336043d6 -r 4e4a579a60af project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/EngineProtocol/FrontendDataUtils.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/EngineProtocol/FrontendDataUtils.java Thu Aug 18 22:37:47 2011 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/EngineProtocol/FrontendDataUtils.java Fri Aug 19 03:29:51 2011 +0200 @@ -148,8 +148,8 @@ return data; } - public static ArrayList> getTeams(Context c){ - ArrayList> ret = new ArrayList>(); + public static ArrayList> getTeams(Context c){ + ArrayList> ret = new ArrayList>(); File teamsDir = new File(c.getFilesDir().getAbsolutePath() + '/' + Team.DIRECTORY_TEAMS); File[] teamFileNames = teamsDir.listFiles(); @@ -168,6 +168,8 @@ HashMap hashmap = new HashMap(); hashmap.put("team", t); hashmap.put("txt", t.name); + hashmap.put("color", t.color); + hashmap.put("count", t.hogCount); switch(t.levels[0]){ case 0: hashmap.put("img", R.drawable.human); diff -r 92a7336043d6 -r 4e4a579a60af project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java Thu Aug 18 22:37:47 2011 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java Fri Aug 19 03:29:51 2011 +0200 @@ -31,7 +31,7 @@ private ImageButton addTeam, back; private ListView availableTeams, selectedTeams; - private ArrayList> availableTeamsList, selectedTeamsList; + private ArrayList> availableTeamsList, selectedTeamsList; private int minTeams = 2; public void onCreate(Bundle savedInstanceState){ @@ -53,14 +53,14 @@ availableTeams.setOnItemClickListener(availableClicker); selectedTeams = (ListView) findViewById(R.id.selectedTeams); - selectedTeamsList = new ArrayList>(); + selectedTeamsList = new ArrayList>(); ArrayList> toBeRemoved = new ArrayList>(); ArrayList teamsStartGame = getIntent().getParcelableArrayListExtra("teams"); - for(HashMap hashmap : availableTeamsList){ + for(HashMap hashmap : availableTeamsList){ for(Team t : teamsStartGame){ if(((Team)hashmap.get("team")).equals(t)){ toBeRemoved.add(hashmap); - selectedTeamsList.add(hashmap); + selectedTeamsList.add(FrontendDataUtils.teamToHashMap(t));//create a new hashmap to ensure all variables are entered into the map } } } @@ -101,14 +101,18 @@ private void updateListViews(){ unregisterForContextMenu(availableTeams); availableTeamsList = FrontendDataUtils.getTeams(this); - for(HashMap hashmap : selectedTeamsList){ + ArrayList> toBeRemoved = new ArrayList>(); + for(HashMap hashmap : selectedTeamsList){ String name = (String)hashmap.get("txt"); - for(HashMap hash : availableTeamsList){ + + for(HashMap hash : availableTeamsList){ if(name.equals((String)hash.get("txt"))){ - availableTeamsList.remove(hash); + toBeRemoved.add(hash); } } } + for(HashMap hash: toBeRemoved) availableTeamsList.remove(hash); + SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty}); availableTeams.setAdapter(adapter); registerForContextMenu(availableTeams); @@ -191,7 +195,7 @@ }; private OnItemClickListener selectedClicker = new OnItemClickListener(){ public void onItemClick(AdapterView arg0, View arg1, int position,long arg3) { - availableTeamsList.add((HashMap) selectedTeamsList.get(position)); + availableTeamsList.add((HashMap) selectedTeamsList.get(position)); selectedTeamsList.remove(position); ((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged(); ((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();