Android Open Source - mvp-notes Notes Activity






From Project

Back to project page mvp-notes.

License

The source code is released under:

Apache License

If you think the Android project mvp-notes 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 com.corneliudascalu.mvpnotes.ui.view.main;
/*from  w w w  .  j  ava2s. c  o  m*/
import com.corneliudascalu.mvpnotes.R;
import com.corneliudascalu.mvpnotes.common.BaseInjectedActivity;
import com.corneliudascalu.mvpnotes.data.model.Note;
import com.corneliudascalu.mvpnotes.ui.view.details.NoteDetailsDialogFragment;

import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.DateTimeFormatterBuilder;

import android.os.Bundle;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import javax.inject.Inject;

import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;


public class NotesActivity extends BaseInjectedActivity implements NotesView {

    @InjectView(R.id.noteText)
    TextView noteText;

    @InjectView(R.id.submitNoteButton)
    Button submitNote;

    @InjectView(R.id.notesList)
    ListView notesList;

    @Inject
    NotesPresenter notesPresenter;

    DateTimeFormatter dateTimeFormatter;

    private ArrayAdapter<Note> mAdapter;

    private ArrayList<Note> mNotes;

    private ActionMode.Callback noteSelectedCallback = new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.getMenuInflater().inflate(R.menu.delete_note, menu);
            return true;
        }

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

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_delete:
                    notesPresenter.deleteNote(mPendingNote);
                    mode.finish();
                    return true;
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    };

    private Note mPendingNote;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notes);
        ButterKnife.inject(this);
        DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
        builder.appendHourOfDay(2).appendLiteral(":").appendMinuteOfHour(2).appendLiteral(":")
                .appendSecondOfMinute(2);
        dateTimeFormatter = builder.toFormatter();

        mNotes = new ArrayList<Note>();
        mAdapter = new ArrayAdapter<Note>(this,
                android.R.layout.simple_list_item_2, mNotes) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                if (convertView == null) {
                    convertView = LayoutInflater.from(parent.getContext())
                            .inflate(android.R.layout.simple_list_item_2, parent, false);
                }

                Note note = getItem(position);
                ((TextView) convertView.findViewById(android.R.id.text1)).setText(note.title);
                ((TextView) convertView.findViewById(android.R.id.text2)).setText(note.text);

                return convertView;
            }
        };

        notesList.setAdapter(mAdapter);
        notesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Note note = mAdapter.getItem(position);
                NoteDetailsDialogFragment dialog = NoteDetailsDialogFragment.newInstance(note);
                dialog.show(getFragmentManager(), NoteDetailsDialogFragment.TAG);
            }
        });
        notesList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position,
                    long id) {
                mPendingNote = mAdapter.getItem(position);
                NotesActivity.this.startActionMode(noteSelectedCallback);
                return true;
            }
        });
        notesPresenter.requestNotes();
    }

    /**
     * We'll need the {@link com.corneliudascalu.mvpnotes.ui.view.main.NotesModule} to supply the
     * {@link com
     * .corneliudascalu.mvpnotes.ui.view.main.NotesPresenter} (and maybe other stuff, in the
     * future)
     */
    @Override
    protected List<Object> getModules() {
        return Arrays.<Object>asList(new NotesModule(this));
    }

    @OnClick(R.id.submitNoteButton)
    public void submitNote() {
        notesPresenter.submitNewNote("Note", noteText.getText().toString());
        noteText.setText(null);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.notes, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void setNoteError(String error) {
        noteText.setError(error);
    }

    @Override
    public void addNotes(Note... notes) {
        Collections.addAll(mNotes, notes);
        mAdapter.notifyDataSetChanged();
    }

    @Override
    public void removeNote(Note note) {
        mNotes.remove(note);
        mAdapter.notifyDataSetChanged();
    }

}




Java Source Code List

com.corneliudascalu.mvpnotes.AppModule.java
com.corneliudascalu.mvpnotes.MVPNotesApp.java
com.corneliudascalu.mvpnotes.common.BaseInjectedActivity.java
com.corneliudascalu.mvpnotes.common.InjectedDialogFragment.java
com.corneliudascalu.mvpnotes.common.ObjectGraphCreator.java
com.corneliudascalu.mvpnotes.common.ObjectGraphHolder.java
com.corneliudascalu.mvpnotes.data.interactor.InteractorsModule.java
com.corneliudascalu.mvpnotes.data.interactor.NoteInteractor.java
com.corneliudascalu.mvpnotes.data.interactor.impl.NoteInteractorImpl.java
com.corneliudascalu.mvpnotes.data.model.DatabaseModule.java
com.corneliudascalu.mvpnotes.data.model.Note.java
com.corneliudascalu.mvpnotes.data.model.SimpleDatabase.java
com.corneliudascalu.mvpnotes.ui.view.details.NoteDetailsDialogFragment.java
com.corneliudascalu.mvpnotes.ui.view.details.NoteDetailsModule.java
com.corneliudascalu.mvpnotes.ui.view.details.SimpleNoteDetailsPresenter.java
com.corneliudascalu.mvpnotes.ui.view.details.interfaces.NoteDetailsPresenter.java
com.corneliudascalu.mvpnotes.ui.view.details.interfaces.NoteDetailsView.java
com.corneliudascalu.mvpnotes.ui.view.main.NotesActivity.java
com.corneliudascalu.mvpnotes.ui.view.main.NotesModule.java
com.corneliudascalu.mvpnotes.ui.view.main.NotesPresenter.java
com.corneliudascalu.mvpnotes.ui.view.main.NotesView.java
com.corneliudascalu.mvpnotes.ui.view.main.OnNoteOperationListener.java
com.corneliudascalu.mvpnotes.ui.view.main.SimpleNotesPresenter.java
com.corneliudascalu.mvpnotes.util.DateTimeDeserializer.java
com.corneliudascalu.mvpnotes.util.DateTimeSerializer.java