Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fake.package.namespace.notes;
- import java.util.ArrayList;
- import android.app.AlertDialog;
- import android.app.LoaderManager;
- import android.content.CursorLoader;
- import android.content.DialogInterface;
- import android.content.Loader;
- import android.database.Cursor;
- import android.graphics.Shader.TileMode;
- import android.graphics.drawable.BitmapDrawable;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.v4.app.LoaderManager.LoaderCallbacks;
- import android.text.Editable;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.EditText;
- import android.widget.ListView;
- import android.widget.SimpleCursorAdapter;
- import com.actionbarsherlock.app.SherlockFragmentActivity;
- import com.actionbarsherlock.app.SherlockListFragment;
- import com.actionbarsherlock.view.ActionMode;
- import com.actionbarsherlock.view.Menu;
- import com.actionbarsherlock.view.MenuInflater;
- import com.actionbarsherlock.view.MenuItem;
- public class NotesActivity extends SherlockFragmentActivity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.bg_striped);
- bg.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
- getSupportActionBar().setBackgroundDrawable(bg);
- BitmapDrawable bgSplit = (BitmapDrawable)getResources().getDrawable(R.drawable.bg_striped_split_img);
- bgSplit.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
- getSupportActionBar().setSplitBackgroundDrawable(bgSplit);
- }
- // Create the list fragment and add it as our sole content.
- if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
- list = new ArrayListFragment();
- getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit();
- }
- }
- public ArrayListFragment list;
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getSupportMenuInflater();
- inflater.inflate(R.menu.menu, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
- case R.id.add_note:
- addNote();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- public void addNote() {
- AlertDialog.Builder alert = new AlertDialog.Builder(this);
- alert.setTitle("Add new note");
- // Set an EditText view to get user input
- final EditText input = new EditText(this);
- alert.setView(input);
- alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- Editable value = input.getText();
- list.notes.add(value.toString());
- list.myAdapter.notifyDataSetChanged();
- return;
- }
- });
- alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- return;
- }
- });
- alert.show();
- }
- public class ArrayListFragment extends SherlockListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
- public ActionMode mMode;
- public mActionModeCallback callback;
- private SimpleCursorAdapter adapter;
- @Override
- public void onListItemClick(ListView l, View v, int position, long id) {
- // Start the CAB using the ActionMode.Callback defined above
- if (mMode != null) {
- if (position == callback.position) {
- v.setSelected(false);
- mMode.finish();
- mMode = null;
- } else {
- v.setSelected(true);
- l.setSelection(position);
- callback = new mActionModeCallback(position);
- mMode = startActionMode(callback);
- }
- } else {
- v.setSelected(true);
- l.setSelection(position);
- callback = new mActionModeCallback(position);
- mMode = startActionMode(callback);
- }
- v.setSelected(true);
- }
- final class mActionModeCallback implements ActionMode.Callback {
- public int position;
- public mActionModeCallback(int position) {
- this.position = position;
- }
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- mode.setTitle(notes.get(this.position));
- MenuInflater inflater = getSupportMenuInflater();
- inflater.inflate(R.menu.contextbar, menu);
- return true;
- }
- // Called each time the action mode is shown. Always called after onCreateActionMode, but
- // may be called multiple times if the mode is invalidated.
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false; // Return false if nothing is done
- }
- // Called when the user selects a contextual menu item
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
- case R.id.delete:
- deleteItem(this.position);
- mode.finish();
- return true;
- case R.id.edit:
- mode.finish();
- return true;
- default:
- return false;
- }
- }
- // Called when the user exits the action mode
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- mMode = null;
- }
- };
- public void deleteItem(int position) {
- notes.remove(position);
- myAdapter.notifyDataSetChanged();
- }
- // Creates a new loader after the initLoader () call
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- String[] projection = { NotesSQLiteHelper.COLUMN_ID, NotesSQLiteHelper.COLUMN_TITLE };
- CursorLoader cursorLoader = new CursorLoader(getApplicationContext(),
- NotesContentProvider.CONTENT_URI, projection, null, null, null);
- return cursorLoader;
- }
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- adapter.swapCursor(data);
- }
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {
- // data is not available anymore, delete reference
- adapter.swapCursor(null);
- }
- ArrayList<String> notes = new ArrayList<String>();
- public ArrayAdapter<String> myAdapter;
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- this.getListView().setDividerHeight(2);
- fillData();
- }
- private void fillData() {
- // Fields from the database (projection)
- // Must include the _id column for the adapter to work
- String[] from = new String[] { NotesSQLiteHelper.COLUMN_TITLE };
- // Fields on the UI to which we map
- int[] to = new int[] { R.id.label };
- getLoaderManager().initLoader(0, null, this); //error
- adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.notes_row, null, from,
- to, 0);
- setListAdapter(adapter);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement