Я хочу использовать свой класс GlobalState в моем HomePlayerAdapter. Когда я нажимаю Switch в моем ListView, они должны сохранить идентификатор из моего объекта игрока в GlobalState. Но когда я нажимаю Switch, мое приложение разбилось.
Здесь мой класс GlobalState:
public class GlobalState extends Application {
private ArrayList<Integer> selectedPlayer;
public ArrayList<Integer> getSelectedPlayer() {
return selectedPlayer;
}
public void addSelectedPlayer(int p) {
this.selectedPlayer.add(p);
}
public void removeSelectedPlayer(int p) {
this.selectedPlayer.remove(p);
}
}
Здесь мой класс HomePlayerAdapter:
public class HomePlayerAdapter extends BaseAdapter {
private Context context;
private ArrayList<Player> items;
private GlobalState globalState;
public HomePlayerAdapter(Context context, ArrayList<Player> items){
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.home_player_list_item, parent, false);
}
globalState = (GlobalState) context.getApplicationContext();
final Player currentItem = (Player) getItem(position);
TextView playerName = (TextView) convertView.findViewById(R.id.PlayerItemTextView);
SwitchMaterial deckSwitch = (SwitchMaterial) convertView.findViewById(R.id.PlayerItemSwitch);
playerName.setText(currentItem.getName());
deckSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked){
globalState.addSelectedPlayer(currentItem.getId());
}if (!isChecked){
globalState.removeSelectedPlayer(currentItem.getId());
}
});
return convertView;
}
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
Когда я нажимаю на Switch, они вызывают: deckSwitch.setOnCheckedChangeListener и проверяют, установлен ли swith или нет. Когда он отмечен, он должен сохранить идентификатор от выбранного игрока в классе GlobalState, а когда он не проверен, он должен удалить идентификатор.