diff options
Diffstat (limited to 'templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl')
-rw-r--r-- | templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl b/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl new file mode 100644 index 0000000..6b4b9a0 --- /dev/null +++ b/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl @@ -0,0 +1,97 @@ +package ${packageName}; + +import ${packageName}.dummy.DummyContent; + +import android.R; +import android.app.Activity; +import android.os.Bundle; +import android.support.v4.app.ListFragment; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListView; + +public class ${CollectionName}Fragment extends ListFragment { + + private static final String STATE_ACTIVATED_POSITION = "activated_position"; + + private Callbacks mCallbacks = sDummyCallbacks; + private int mActivatedPosition = ListView.INVALID_POSITION; + + public interface Callbacks { + + public void onItemSelected(String id); + } + + private static Callbacks sDummyCallbacks = new Callbacks() { + @Override + public void onItemSelected(String id) { + } + }; + + public ${CollectionName}Fragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(), + R.layout.simple_list_item_activated_1, + R.id.text1, + DummyContent.ITEMS)); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + if (savedInstanceState != null && savedInstanceState + .containsKey(STATE_ACTIVATED_POSITION)) { + setActivatedPosition(savedInstanceState.getInt(STATE_ACTIVATED_POSITION)); + } + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + if (!(activity instanceof Callbacks)) { + throw new IllegalStateException("Activity must implement fragment's callbacks."); + } + + mCallbacks = (Callbacks) activity; + } + + @Override + public void onDetach() { + super.onDetach(); + mCallbacks = sDummyCallbacks; + } + + @Override + public void onListItemClick(ListView listView, View view, int position, long id) { + super.onListItemClick(listView, view, position, id); + mCallbacks.onItemSelected(DummyContent.ITEMS.get(position).id); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mActivatedPosition != ListView.INVALID_POSITION) { + outState.putInt(STATE_ACTIVATED_POSITION, mActivatedPosition); + } + } + + public void setActivateOnItemClick(boolean activateOnItemClick) { + getListView().setChoiceMode(activateOnItemClick + ? ListView.CHOICE_MODE_SINGLE + : ListView.CHOICE_MODE_NONE); + } + + public void setActivatedPosition(int position) { + if (position == ListView.INVALID_POSITION) { + getListView().setItemChecked(mActivatedPosition, false); + } else { + getListView().setItemChecked(position, true); + } + + mActivatedPosition = position; + } +} |