package com.idunnolol.sotm.fragment;
import android.app.Fragment;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.danlew.utils.Ui;
import com.idunnolol.sotm.R;
import com.idunnolol.sotm.data.Card;
import com.idunnolol.sotm.data.CardSet;
import com.idunnolol.sotm.widget.CardConfigAdapter;
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
public class CardConfigListFragment extends Fragment {
public static final String TAG = CardConfigListFragment.class.getName();
private StickyListHeadersListView mListView;
private CardConfigAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_card_config, container, false);
mListView = Ui.findView(view, R.id.list);
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mListView.setOnItemClickListener(mOnItemClickListener);
mListView.setOnHeaderClickListener(mOnHeaderClickListener);
mAdapter = new CardConfigAdapter(getActivity());
mListView.setAdapter(mAdapter);
syncCheckedCards();
return view;
}
private AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
SparseBooleanArray checkedItems = mListView.getCheckedItemPositions();
boolean enabled = checkedItems.get(position);
Card card = mAdapter.getItem(position);
card.setEnabled(enabled);
syncCheckedCards();
}
};
private StickyListHeadersListView.OnHeaderClickListener mOnHeaderClickListener =
new StickyListHeadersListView.OnHeaderClickListener() {
@Override
public void onHeaderClick(
StickyListHeadersListView stickyListHeadersListView, View view, int position, long headerId,
boolean currentlySticky) {
CardSet cardSet = mAdapter.getHeaderItem(position);
cardSet.setAllCardsEnabled(!cardSet.areAllCardsEnabled());
syncCheckedCards();
}
};
private void syncCheckedCards() {
int count = mAdapter.getCount();
for (int position = 0; position < count; position++) {
Card card = mAdapter.getItem(position);
mListView.setItemChecked(position, card.isEnabled());
}
mAdapter.notifyDataSetChanged();
}
}