خرید بک لینک

public class MainPresenter implements MVP_Main.ProvidedPresenterOps, MVP_Main.RequiredPresenterOps {

// View reference. We use as a WeakReference

// because the Activity could be destroyed at any time

// and we don't want to create a memory leak

private WeakReference<MVP_Main.RequiredViewOps> mView;

// Model reference

private MVP_Main.ProvidedModelOps mModel;

/**

* Presenter Constructor

* @param view MainActivity

*/

public MainPresenter(MVP_Main.RequiredViewOps view) {

mView = new WeakReference<>(view);

}

/**

* Retu the View reference.

* Throw an exception if the View is unavailable.

*/

private MVP_Main.RequiredViewOps getView() throws NullPointerException{

if ( mView != null )

retu mView.get();

else

throw new NullPointerException("View is unavailable");

}

/**

* Retrieves total Notes count from Model

* @retu Notes list size

*/

@Override

public int getNotesCount() {

retu mModel.getNotesCount();

}

/**

* Creates the RecyclerView holder and setup its view

* @param parent Recycler viewGroup

* @param viewType Holder type

* @retu Recycler ViewHolder

*/

@Override

public NotesViewHolder createViewHolder(ViewGroup parent, int viewType) {

NotesViewHolder viewHolder;

LayoutInflater inflater = LayoutInflater.from(parent.getContext());

View viewTaskRow = inflater.inflate(R.layout.holder_notes, parent, false);

viewHolder = new NotesViewHolder(viewTaskRow);

retu viewHolder;

}

/**

* Binds ViewHolder with RecyclerView

* @param holder Holder to bind

* @param position Position on Recycler adapter

*/

@Override

public void bindViewHolder(final NotesViewHolder holder, int position) {

final Note note = mModel.getNote(position);

holder.text.setText( note.getText() );

holder.date.setText( note.getDate() );

holder.btnDelete.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

clickDeleteNote(note, holder.getAdapterPosition(), holder.getLayoutPosition());

}

});

}

/**

* @retu Application context

*/

@Override

public Context getAppContext() {

try {

retu getView().getAppContext();

} catch (NullPointerException e) {

retu null;

}

}

/**

* @retu Activity context

*/

@Override

public Context getActivityContext() {

try {

retu getView().getActivityContext();

} catch (NullPointerException e) {

retu null;

}

}

/**

* Called by View when user clicks on new Note button.

* Creates a Note with text typed by the user and asks

* Model to insert it in DB.

* @param editText EditText with text typed by user

*/

@Override

public void clickNewNote(final EditText editText) {

getView().showProgress();

final String noteText = editText.getText().toString();

if ( !noteText.isEmpty() ) {

new AsyncTask<Void, Void, Integer>() {

@Override

protected Integer doInBackground(Void... params) {

// Inserts note in Model, retuing adapter position

retu mModel.insertNote(makeNote(noteText));

}

@Override

protected void onPostExecute(Integer adapterPosition) {

try {

if (adapterPosition > -1) {

// Note inserted

getView().clearEditText();

getView().notifyItemInserted(adapterPosition + 1);

getView().notifyItemRangeChanged(adapterPosition, mModel.getNotesCount());

} else {

// Informs about error

getView().hideProgress();

getView().showToast(makeToast("Error creating note [" + noteText + "]"));

}

} catch (NullPointerException e) {

e.printStackTrace();

}

}

}.execute();

} else {

try {

getView().showToast(makeToast("Caot add a blank note!"));

} catch (NullPointerException e) {

e.printStackTrace();

}

}

}

/**

* Creates a Note object with given text

* @param noteText String with Note text

* @retu A Note object

*/

public Note makeNote(String noteText) {

Note note = new Note();

note.setText( noteText );

note.setDate(getDate());

retu note;

}

}

برچسب: نویسنده: استخدام کار تاريخ: شنبه 4 ارديبهشت 1395 ساعت: 15:24

صفحه بندی