Articles of mvp

在MVP中是View或Presenter的onClick责任吗?

在MVP模式中谁负责处理用户界面的点击? 例如,非MVP方法将是这样的: counterButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { totalClicks++; counterTextView.setText(“Total clicks so far: “+totalClicks); } }); 使用MVP是onClick的Presenter的责任吗? 或View可以处理? 有人可以澄清一下吗?

Android MVP:在Presenter中安全使用Context

在我的应用程序中,我使用ContentProvider并使用LoaderManager.LoaderCallbacks. 片段(查看) public class ArticleCatalogFragment extends BaseFragment implements ArticleCatalogPresenter.View, LoaderManager.LoaderCallbacks { @Override public Loader onCreateLoader(int id, Bundle args) { return onCreateArticleCatalogLoader(args); } @Override public void onLoadFinished(Loader loader, Cursor data) { data.registerContentObserver(new LoaderContentObserver(new Handler(), loader)); updateUI(data); } private Loader onCreateArticleCatalogLoader(Bundle args) { int categoryId = args.getInt(CATEGORY_ID); Loader loader = new ArticleCatalogLoader(this.getActivity(), categoryId); return loader; } } […]

在Android MVP中放置BroadcastReceiver的位置?

我有一个接收网络连接事件的BroadcastReceiver实现。 它在AndroidManifest.xml中声明,并在网络事件发生时由Android自动调用。 广播接收器: public class ConnectivityChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.v(TAG, “action: ” + intent.getAction()); Log.v(TAG, “component: ” + intent.getComponent()); } } AndroidManifest.xml中: … 我想在这里为我的应用程序使用Google的MVP示例架构: https://github.com/googlesamples/android-architecture/tree/todo-mvp/ 使用上面的架构,只是想知道: 我的BroadcastReceiver应放在哪里? 如果我的BroadcastReceiver需要写入数据库,那么最好的方法是什么? 如果我的BroadcastReceiver需要更新UI,那么最好的方法是什么?

如何使用适用于Android的MVP模式控制ListView

我目前正在使用MVP Pattern开发一个Android应用程序。 当我尝试开发一个Activity时,我应该使用ListView。 所以我正在使用Adapter for ListView。 但我听说适配器类似于MVP模式上的Presenter。 我想如果Apdater对Presenter很熟悉,那么我应该让Presenter更新ListView而不是Adapter。 遇到这种情况时,如何开发ListView? 只需使用适配器并继续使用MVP模式? 谢谢你的阅读。

视图之间的共享元素转换(不是活动或片段)

假设我正在使用基于视图的方法来开发Android应用程序,例如以下文章中所述: http : //corner.squareup.com/2014/10/advocating-against-android-fragments.html 所以现在我有两个全屏视图。 一个是可见的,包含一个图像网格。 另一个是隐藏的,是待点击图像的详细视图。 如果在单击网格中的图像时没有转换,则将隐藏网格视图并显示详细视图。 现在,如果我想要一些类似于网格视图中的小图像和详细视图中的较大图像之间的共享元素过渡的内容。 这样的事情可能吗?

Android MVP – 如何在活动演示者和片段演示者之间进行通信

我有一个包含3个片段的活动,目前我使用的是ViewPager。 我想实现MVP并在活动演示者和片段演示者之间进行通信,即: 将数据从活动演示者传递到片段演示者 从片段演示者向活动演示者发送事件 … 但我不知道如何以官方方式做到这一点。 我可以使用BusEvent,但我认为这不是一个好习惯。

Android MVP – 应避免在演示者中使用R.string引用吗?

为了完全将Android SDK与我的演示者类分离,我试图找出避免访问我们通常使用R的资源ID的最佳方法。 我以为我可以创建一个接口来访问像字符串资源这样的东西,但我仍然需要ID来引用字符串。 如果我要做的事…… public class Presenter { private MyView view = …; private MyResources resources = …; public void initializeView() { view.setLabel(resources.getString(LABEL_RES_ID); } } 我仍然必须拥有LABEL_RES_ID ,然后将其映射到我的资源桥中的R.string.label 。 这很酷,因为我可以在用其他东西进行unit testing时将其换掉,但我不想管理另一个到字符串值的映射。 如果我放弃并只使用R.string值,我的演示者将再次绑定到我的视图。 那不理想? 是否有一个更简单的解决方案,人们用来解决这个问题,以使他们远离演示者。 我不想以超出Android提供的方式管理字符串,因为我仍然希望将它们放在布局文件中并获得国际化等的好处。我想做一个可以与这个演示者一起工作的哑unit testing无需Android SDK即可生成R.java文件。 这要问太多了吗?

Android MVP从Presenter打开Activity,反模式?

如果从Presenter层打开一个Activity它会是一个反模式吗? 如果是这样,我应该从视图层管理应用程序的导航吗?

如何在没有Dagger的MVP中使用共享首选项并且不会导致Presenter依赖于上下文?

我正在尝试在没有Dagger的情况下实现MVP(用于学习目的)。 但我遇到了问题 – 我使用Repository模式从缓存(共享首选项)或网络获取原始数据: Shared Prefs| |RepositoryModelPresenterView Network| 但要把我的手放在共享首选项上,我必须把它放在某个地方 presenter = new Presenter(getApplicationContext()); 我使用onRetainCustomNonConfigurationInstance / getLastCustomNonConfigurationInstance对来保持Presenter“保留”。 public class MyActivity extends AppCompatActivity implements MvpView { @Override protected void onCreate(Bundle savedInstanceState) { //… presenter = (MvpPresenter) getLastCustomNonConfigurationInstance(); if(null == presenter){ presenter = new Presenter(getApplicationContext()); } presenter.attachView(this); } @Override public Object onRetainCustomNonConfigurationInstance() { return presenter; } //… } […]

android模型视图演示者/控制器示例

有没有关于如何最好地在任何地方构建Android应用程序的好例子或教程? 我是java和android的新手,我使用asp.net中的模型视图演示器和模型视图控制器的被动和监督控制器变体构建了winforms应用程序,但没有真正看到任何使用这些模式的android上的示例或代码。 人们如何在野外构建体面大小的Android应用程序。 有没有最好的做法,或者我应该严格坚持官方的Android文档。