Android Open Source - flashcards Study List Activity






From Project

Back to project page flashcards.

License

The source code is released under:

MIT License

If you think the Android project flashcards 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 edu.cmu.hcii.ssui.flashcards;
/* w ww . j a v a 2  s  .c o m*/
import android.app.DialogFragment;
import android.app.ListActivity;
import android.app.LoaderManager;
import android.content.ContentValues;
import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

import com.commonsware.cwac.loaderex.SQLiteCursorLoader;

import edu.cmu.hcii.ssui.flashcards.Deck.DeckMutator;
import edu.cmu.hcii.ssui.flashcards.db.CardContract.DeckTable;
import edu.cmu.hcii.ssui.flashcards.db.CardContract.Queries;
import edu.cmu.hcii.ssui.flashcards.db.CardContract.Tables;
import edu.cmu.hcii.ssui.flashcards.db.CardDbHelper;
import edu.cmu.hcii.ssui.flashcards.dialogs.DeleteDeckDialog;
import edu.cmu.hcii.ssui.flashcards.dialogs.EditDeckDialog;
import edu.cmu.hcii.ssui.flashcards.dialogs.NewDeckDialog;
import edu.cmu.hcii.ssui.flashcards.util.ArgUtil;

public class StudyListActivity extends ListActivity implements
        LoaderManager.LoaderCallbacks<Cursor>, DeckMutator, ActionMode.Callback {
    private static final String TAG = StudyListActivity.class.getSimpleName();

    private static final int LOADER_ID = 1;

    private ActionMode.Callback mActionModeCallback;
    private long mSelectedId;
    private String mSelectedName, mSelectedDescription;

    private LoaderManager.LoaderCallbacks<Cursor> mCallbacks;
    private SimpleCursorAdapter mAdapter;
    private SQLiteCursorLoader mLoader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                mSelectedId = id;
                mSelectedName = ((TextView) view.findViewById(R.id.label_deck_name)).getText().toString();
                mSelectedDescription = ((TextView) view.findViewById(R.id.label_deck_description)).getText()
                        .toString();
                startActionMode(mActionModeCallback);
                view.setSelected(true);
                parent.setSelection(position);
                return true;
            }
        });

        mActionModeCallback = this;

        String[] dataColumns = { DeckTable.NAME, DeckTable.DESCRIPTION };
        int[] viewIds = { R.id.label_deck_name, R.id.label_deck_description };

        mAdapter = new SimpleCursorAdapter(this, R.layout.deck_list_item, null, dataColumns,
                viewIds, 0);
        setListAdapter(mAdapter);
        mCallbacks = this;

        LoaderManager lm = getLoaderManager();
        lm.initLoader(LOADER_ID, null, mCallbacks);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        v.setEnabled(false);

        String name = ((TextView) v.findViewById(R.id.label_deck_name)).getText().toString();
        String description = ((TextView) v.findViewById(R.id.label_deck_description)).getText()
                .toString();

        Intent intent = new Intent(this, StudyActivity.class);
        intent.putExtra(ArgUtil.ARG_DECK_ID, id);
        intent.putExtra(ArgUtil.ARG_DECK_NAME, name);
        intent.putExtra(ArgUtil.ARG_DECK_DESCRIPTION, description);
        startActivity(intent);
    }

    /* --- ACTION BAR --- */

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.manage, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
        case R.id.action_new_deck:
            DialogFragment dialog = NewDeckDialog.newInstance();
            dialog.show(getFragmentManager(), NewDeckDialog.class.getSimpleName());
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    /* --- LOADER CALLBACKS --- */

    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        mLoader = new SQLiteCursorLoader(this, CardDbHelper.getInstance(this),
                Queries.GET_ALL_DECKS, null);
        return mLoader;
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        mLoader = (SQLiteCursorLoader) loader;

        switch (loader.getId()) {
        case LOADER_ID:
            mAdapter.swapCursor(cursor);
            break;
        }
    }

    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        mLoader = (SQLiteCursorLoader) loader;
        mAdapter.swapCursor(null);
    }

    /* --- DECK MUTATOR METHODS --- */

    @Override
    public void insertDeck(String name, String description) {
        ContentValues values = new ContentValues();
        values.put(DeckTable.NAME, name);
        values.put(DeckTable.DESCRIPTION, description);

        if (!name.isEmpty()) {
            mLoader.insert(Tables.DECKS, null, values);
        }
    }

    @Override
    public void deleteDeck(long id) {
        mLoader.delete(Tables.DECKS, DeckTable._ID + " = ?", new String[] { String.valueOf(id) });
    }

    @Override
    public void updateDeck(long id, String name, String description) {
        ContentValues values = new ContentValues();
        values.put(DeckTable.NAME, name);
        values.put(DeckTable.DESCRIPTION, description);

        mLoader.update(Tables.DECKS, values, DeckTable._ID + " = ?", new String[] { String.valueOf(id) });
    }

    /* --- ACTION MODE CALLBACKS --- */

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        DialogFragment dialog;
        switch(item.getItemId()) {
        case R.id.action_edit:
            dialog = EditDeckDialog.newInstance(mSelectedId, mSelectedName, mSelectedDescription);
            dialog.show(getFragmentManager(), EditDeckDialog.class.getSimpleName());
            mode.finish();
            return true;
        case R.id.action_delete:
            dialog = DeleteDeckDialog.newInstance(mSelectedId);
            dialog.show(getFragmentManager(), DeleteDeckDialog.class.getSimpleName());
            mode.finish();
            return true;
        }
        return false;
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.item_context_menu, menu);
        mode.setTitle(R.string.deck_selected);
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        // Do nothing.
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }

}




Java Source Code List

edu.cmu.hcii.ssui.flashcards.CardListActivity.java
edu.cmu.hcii.ssui.flashcards.Card.java
edu.cmu.hcii.ssui.flashcards.Deck.java
edu.cmu.hcii.ssui.flashcards.StudyActivity.java
edu.cmu.hcii.ssui.flashcards.StudyListActivity.java
edu.cmu.hcii.ssui.flashcards.db.CardContract.java
edu.cmu.hcii.ssui.flashcards.db.CardDatabase.java
edu.cmu.hcii.ssui.flashcards.db.CardDbHelper.java
edu.cmu.hcii.ssui.flashcards.dialogs.DeleteCardDialog.java
edu.cmu.hcii.ssui.flashcards.dialogs.DeleteDeckDialog.java
edu.cmu.hcii.ssui.flashcards.dialogs.EditCardDialog.java
edu.cmu.hcii.ssui.flashcards.dialogs.EditDeckDialog.java
edu.cmu.hcii.ssui.flashcards.dialogs.NewCardDialog.java
edu.cmu.hcii.ssui.flashcards.dialogs.NewDeckDialog.java
edu.cmu.hcii.ssui.flashcards.util.ArgUtil.java