43 import android.widget.RelativeLayout; |
44 import android.widget.RelativeLayout; |
44 import android.widget.SimpleAdapter; |
45 import android.widget.SimpleAdapter; |
45 import android.widget.SimpleAdapter.ViewBinder; |
46 import android.widget.SimpleAdapter.ViewBinder; |
46 import android.widget.TextView; |
47 import android.widget.TextView; |
47 |
48 |
48 public class TeamSelectionActivity extends Activity{ |
49 public class TeamSelectionActivity extends Activity implements Runnable{ |
49 |
50 |
50 private static final int ACTIVITY_TEAMCREATION = 0; |
51 private static final int ACTIVITY_TEAMCREATION = 0; |
51 |
52 |
52 private ImageButton addTeam, back; |
53 private ImageButton addTeam, back; |
53 private ListView availableTeams, selectedTeams; |
54 private ListView availableTeams, selectedTeams; |
54 private ArrayList<HashMap<String, Object>> availableTeamsList, selectedTeamsList; |
55 private List<HashMap<String, Object>> availableTeamsList, selectedTeamsList; |
55 private TextView txtInfo; |
56 private TextView txtInfo; |
56 |
57 |
57 public void onCreate(Bundle savedInstanceState){ |
58 public void onCreate(Bundle savedInstanceState){ |
58 super.onCreate(savedInstanceState); |
59 super.onCreate(savedInstanceState); |
59 |
60 |
60 setContentView(R.layout.team_selector); |
61 setContentView(R.layout.team_selector); |
61 |
62 |
62 addTeam = (ImageButton) findViewById(R.id.btnAdd); |
63 addTeam = (ImageButton) findViewById(R.id.btnAdd); |
63 back = (ImageButton) findViewById(R.id.btnBack); |
64 back = (ImageButton) findViewById(R.id.btnBack); |
64 txtInfo = (TextView) findViewById(R.id.txtInfo); |
65 txtInfo = (TextView) findViewById(R.id.txtInfo); |
65 |
66 selectedTeams = (ListView) findViewById(R.id.selectedTeams); |
|
67 availableTeams = (ListView) findViewById(R.id.availableTeams); |
66 addTeam.setOnClickListener(addTeamClicker); |
68 addTeam.setOnClickListener(addTeamClicker); |
67 back.setOnClickListener(backClicker); |
69 back.setOnClickListener(backClicker); |
68 |
70 |
69 availableTeams = (ListView) findViewById(R.id.availableTeams); |
71 availableTeamsList = new ArrayList<HashMap<String, Object>>(); |
70 availableTeamsList = FrontendDataUtils.getTeams(this); |
|
71 SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry_simple, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty}); |
72 SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry_simple, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty}); |
72 availableTeams.setAdapter(adapter); |
73 availableTeams.setAdapter(adapter); |
|
74 availableTeams.setOnItemClickListener(availableClicker); |
73 registerForContextMenu(availableTeams); |
75 registerForContextMenu(availableTeams); |
74 availableTeams.setOnItemClickListener(availableClicker); |
76 |
75 |
|
76 selectedTeams = (ListView) findViewById(R.id.selectedTeams); |
|
77 selectedTeamsList = new ArrayList<HashMap<String, Object>>(); |
77 selectedTeamsList = new ArrayList<HashMap<String, Object>>(); |
78 ArrayList<HashMap<String, ?>> toBeRemoved = new ArrayList<HashMap<String, ?>>(); |
|
79 ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams"); |
|
80 for(HashMap<String, Object> hashmap : availableTeamsList){ |
|
81 for(Team t : teamsStartGame){ |
|
82 if(((Team)hashmap.get("team")).equals(t)){ |
|
83 toBeRemoved.add(hashmap); |
|
84 selectedTeamsList.add(FrontendDataUtils.teamToHashMap(t));//create a new hashmap to ensure all variables are entered into the map |
|
85 } |
|
86 } |
|
87 } |
|
88 for(HashMap<String, ?> hashmap : toBeRemoved) availableTeamsList.remove(hashmap); |
|
89 |
|
90 adapter = new SimpleAdapter(this, selectedTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img", "color", "count"}, new int[]{R.id.txtName, R.id.imgDifficulty, R.id.teamColor, R.id.teamCount}); |
78 adapter = new SimpleAdapter(this, selectedTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img", "color", "count"}, new int[]{R.id.txtName, R.id.imgDifficulty, R.id.teamColor, R.id.teamCount}); |
91 adapter.setViewBinder(viewBinder); |
79 adapter.setViewBinder(viewBinder); |
92 selectedTeams.setAdapter(adapter); |
80 selectedTeams.setAdapter(adapter); |
93 selectedTeams.setOnItemClickListener(selectedClicker); |
81 selectedTeams.setOnItemClickListener(selectedClicker); |
94 |
82 |
95 txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeams.getChildCount())); |
83 txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeams.getChildCount())); |
|
84 |
|
85 new Thread(this).start();//load the teams from xml async |
|
86 } |
|
87 |
|
88 public void run(){ |
|
89 List<HashMap<String, Object>> teamsList = FrontendDataUtils.getTeams(this);//teams from xml |
|
90 ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams");//possible selected teams |
|
91 |
|
92 for(HashMap<String, Object> hashmap : teamsList){ |
|
93 boolean added = false; |
|
94 for(Team t : teamsStartGame){ |
|
95 if(((Team)hashmap.get("team")).equals(t)){//add to available or add to selected |
|
96 selectedTeamsList.add(FrontendDataUtils.teamToMap(t));//create a new hashmap to ensure all variables are entered into the map |
|
97 added = true; |
|
98 break; |
|
99 } |
|
100 } |
|
101 if(!added) availableTeamsList.add(hashmap); |
|
102 } |
|
103 |
|
104 this.runOnUiThread(new Runnable(){ |
|
105 public void run() { |
|
106 ((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged(); |
|
107 ((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged(); |
|
108 } |
|
109 }); |
96 } |
110 } |
97 |
111 |
98 private ViewBinder viewBinder = new ViewBinder(){ |
112 private ViewBinder viewBinder = new ViewBinder(){ |
99 public boolean setViewValue(View view, Object data, String textRepresentation) { |
113 public boolean setViewValue(View view, Object data, String textRepresentation) { |
100 switch(view.getId()){ |
114 switch(view.getId()){ |