Back to project page trivial-lists.
The source code is released under:
MIT License
If you think the Android project trivial-lists listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package org.hbabcock.triviallists; //ww w.j a v a2 s .co m import java.util.ArrayList; import java.util.UUID; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.ListFragment; import android.util.Log; import android.view.ActionMode; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView.MultiChoiceModeListener; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class CategoryFragment extends ListFragment { private static final String TAG = "CategoryFragment"; private ArrayList<Category> mCategories; public class CategoryAdapter extends ArrayAdapter<Category>{ public CategoryAdapter(ArrayList<Category> categories){ super(getActivity(), 0, categories); } @Override public View getView(int position, View convertView, ViewGroup parent){ if (convertView == null){ convertView = getActivity().getLayoutInflater().inflate(R.layout.category_fragment_list_item, null); } Category c = getItem(position); Log.i(TAG, "name: " + c.getName()); ((TextView)convertView.findViewById(R.id.category_list_item)).setText(c.getName()); return convertView; } } private void confirmDelete(Category c){ Log.i(TAG, "confirmDelete"); FragmentManager fm = getActivity().getSupportFragmentManager(); CategoryDeleteDialog dialog = CategoryDeleteDialog.newInstance(c); dialog.setTargetFragment(CategoryFragment.this, CategoryDeleteDialog.REQUEST_CODE); dialog.show(fm, TAG); } private void editCategory(Category c){ Log.i(TAG, "editCategory"); FragmentManager fm = getActivity().getSupportFragmentManager(); GenericEditorDialogFragment dialog = GenericEditorDialogFragment.newInstance(c.getId(), c.getName()); dialog.setTargetFragment(CategoryFragment.this, GenericEditorDialogFragment.REQUEST_EDIT); dialog.show(fm, TAG); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data){ Log.d(TAG, "onActivityResult"); if (resultCode != Activity.RESULT_OK) return; CategoryItemManager cim = CategoryItemManager.get(getActivity()); switch(requestCode){ case GenericEditorDialogFragment.REQUEST_NEW: cim.addCategory(new Category(data.getStringExtra(GenericEditorDialogFragment.EXTRA_GENERIC_NAME))); break; case GenericEditorDialogFragment.REQUEST_EDIT: Category c1 = cim.getCategory(UUID.fromString(data.getStringExtra(GenericEditorDialogFragment.EXTRA_GENERIC_ID))); c1.setName(data.getStringExtra(GenericEditorDialogFragment.EXTRA_GENERIC_NAME)); break; case CategoryDeleteDialog.REQUEST_CODE: Category c2 = cim.getCategory(UUID.fromString(data.getStringExtra(CategoryDeleteDialog.EXTRA_CATEGORY_ID))); cim.deleteCategory(c2); break; } ((CategoryAdapter)getListAdapter()).notifyDataSetChanged(); } @Override public boolean onContextItemSelected(MenuItem item){ AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); int position = info.position; CategoryAdapter adapter = (CategoryAdapter)getListAdapter(); Category category = adapter.getItem(position); switch (item.getItemId()){ case R.id.delete_category: confirmDelete(category); return true; case R.id.edit_category: editCategory(category); return true; } return super.onContextItemSelected(item); } @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Log.i(TAG, "onCreate"); setHasOptionsMenu(true); getActivity().setTitle(R.string.category_fragment_title); mCategories = CategoryItemManager.get(getActivity()).getCategories(); CategoryAdapter adapter = new CategoryAdapter(mCategories); setListAdapter(adapter); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ getActivity().getMenuInflater().inflate(R.menu.category_fragment_context_menu, menu); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ super.onCreateOptionsMenu(menu, inflater); Log.i(TAG, "onCreateOptionsMenu"); inflater.inflate(R.menu.category_fragment_menu, menu); } @TargetApi(11) @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ Log.i(TAG, "onCreateView"); View v = inflater.inflate(R.layout.category_fragment, parent, false); ListView lv = (ListView)v.findViewById(android.R.id.list); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){ registerForContextMenu(lv); } else{ lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); lv.setMultiChoiceModeListener(new MultiChoiceModeListener(){ public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked){ } public boolean onCreateActionMode(ActionMode mode, Menu menu){ MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.category_fragment_context_menu, menu); return true; } public boolean onPrepareActionMode(ActionMode mode, Menu menu){ return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item){ CategoryAdapter adapter = (CategoryAdapter)getListAdapter(); switch (item.getItemId()){ case R.id.delete_category: for (int i = adapter.getCount() - 1; i >= 0; i--){ if (getListView().isItemChecked(i)){ confirmDelete(adapter.getItem(i)); } } mode.finish(); return true; case R.id.edit_category: for (int i = 0; i < adapter.getCount(); i++){ if (getListView().isItemChecked(i)){ editCategory(adapter.getItem(i)); } } mode.finish(); return true; default: return false; } } public void onDestroyActionMode(ActionMode mode){ } }); } return v; } @Override public void onListItemClick(ListView l, View v, int position, long id){ Intent i = new Intent(getActivity(), ItemPagerActivity.class); i.putExtra(ItemFragment.EXTRA_CATEGORY_ID, ((Category)(getListAdapter()).getItem(position)).getId()); startActivityForResult(i, 0); } @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()){ case R.id.menu_item_new_category: Log.i(TAG, "startAddDialog"); FragmentManager fm = getActivity().getSupportFragmentManager(); Category c = new Category(""); GenericEditorDialogFragment dialog = GenericEditorDialogFragment.newInstance(c.getId(), c.getName()); dialog.setTargetFragment(CategoryFragment.this, GenericEditorDialogFragment.REQUEST_NEW); dialog.show(fm, TAG); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onPause(){ super.onPause(); Log.i(TAG,"onPause"); CategoryItemManager.get(getActivity()).save(); } @Override public void onResume(){ super.onResume(); Log.i(TAG,"onResume"); ((CategoryAdapter)getListAdapter()).notifyDataSetChanged(); } }