Skip to content

KarolMB/presenter-example

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Activity - Presenter Example

This sample demonstrate simple and clean way of android project architecture.

Activity - contains public methods to deal with UI.
Presenter - receive UI events from Activity and decided what to do.

FAQ

Why not to put all the code inside Activity?

Because you never know how big it can grow.

Why not to use MV*whatever pattern?

Because it comes with InterfaceStackoverflowException. Number of interfaces and abstraction is huge, for most of android projects (where we are not event writing tests) this is overengineering, just admit this.

Code example

public class FeedActivity extends AppCompatActivity {

    private FeedPresenter mPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.feed_activity);

        initToolBar();
        initView();

        mPresenter = new FeedPresenter();
        mPresenter.onAttachActivity(savedInstanceState, this);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id) {
            case R.id.action_settings:
                mPresenter.onToolbarSettingsClicked();
                return true;
            case R.id.action_help:
                mPresenter.onToolbarHelpClicked();
                return true;
            case android.R.id.home:
                mPresenter.onToolbarBackClicked();
                return true;
        }

        return super.onOptionsItemSelected(item);
    }
    
    // omitted
public class FeedPresenter {

    private FeedActivity mActivity;

    public void onAttachActivity(Bundle savedInstanceState, FeedActivity activity) {
        mActivity = activity;
        loadData();
    }

    public void onDetachActivity() {
        mActivity = null;
    }

    public void onToolbarSettingsClicked() {
        // handle click
    }

    public void onToolbarHelpClicked() {
        // handle click
    }

    public void onToolbarBackClicked() {
        mActivity.finish();
    }

  // ommited
}

Full code is available here.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%