Android Open Source - trivial-lists Category Fragment






From Project

Back to project page trivial-lists.

License

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.

Java Source Code

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();
  }


}




Java Source Code List

org.hbabcock.triviallists.CategoryActivity.java
org.hbabcock.triviallists.CategoryDeleteDialog.java
org.hbabcock.triviallists.CategoryFragment.java
org.hbabcock.triviallists.CategoryItemManager.java
org.hbabcock.triviallists.Category.java
org.hbabcock.triviallists.GenericEditorDialogFragment.java
org.hbabcock.triviallists.ItemFragmentEdit.java
org.hbabcock.triviallists.ItemFragmentShop.java
org.hbabcock.triviallists.ItemFragment.java
org.hbabcock.triviallists.ItemPagerActivity.java
org.hbabcock.triviallists.Item.java
org.hbabcock.triviallists.SingleFragmentActivity.java
org.hbabcock.triviallists.TrivialListJSONSerializer.java