2016-09-07 5 views
2

私はModel View Presenter for Androidを勉強していますAndroid用MVP、フラグメントにどのように対処する必要がありますか?

私は多くのチュートリアルとサンプルを読んできましたが、フラグメント引数を与えるべき方法を示していないようです。

は私がこのフラグメントは、ハンバーガーのRecyclerViewを示して、私が何を意味するか

BurgerListFragmentの例

見ていきましょう。基本となるアダプターには、ハンバーガーを表すオブジェクトの配列が含まれています。

我々はBurgerListFragmentからハンバーガーをクリックすると、このイベントは、その後BurgerDetailFragmentを示すべきであるという見解に戻って通信し、当社のプレゼンターにBurgerDetailFragment

渡されます。

ただし、クリックしたバーガーオブジェクトはBurgerDetailFragmentに渡す必要があります。

ので、一般的には、この

public static BurgerDetailFragment newInstance(Burger burger){ 
BurgerDetailFragment burgerDetailFragment = new BurgerDetailFragment(); 
Bundle args = new Bundle(); 
args.putParcelable(BURGER_KEY,burger); 
burgerDetailFragment.setArguments(args); 
return burgerDetailFragment;  
} 

しかし、私の混乱が、それは別のビューに与えるモデルからデータを取得するようBurgerDetailFragmentを示すために、プレゼンターで言われてBurgerListFragmentから来ているとビューが通信してはならないようなものですモデルに!

何か質問は私が私の例では

注1をお知らせしている場合、私は2つの断片同士が直接通信していることは悪いことを承知していますが、それはちょうど、このサンプルのためのものであり、実際には別であります私は別の日のために持っている質問!

答えて

1

私がこのようなことを管理する方法は、現在選択されているデータを表すモデルの値を持つことです。あなたはおそらくローカルデータベースにあなたのバーガーデータを続けるだろう。実際には

MVP Burger Diagram

うまくいけば、次の図はあなたに私が何を意味するかの良いアイデアを提供します。 BurgerListPresenterは、dbをロードするすべてのバーガーのリストをモデルに要求します。

ユーザーがバーガーを選択すると、プレゼンターはこのデータをモデルに戻します。これは、たとえばSharedPrefsに選択されたバーガーのIDとして格納できます。

BurgerDetailsPresenterは、現在選択されているバーガーをモデルに問い合わせます。モデルはSharedPrefsに現在のバーガーのIDをチェックし、それをデータベースからロードします。

このように、2つのプレゼンターのように、2つのフラグメントは完全に認識されません。

関連する問題