2016-09-07 1 views
2

Android 용 모델 뷰 발표자를 신청 중입니다.Android 용 MVP, 단편에 의약품을 어떻게 제공해야합니까?

많은 튜토리얼과 예제를 통해 살펴 보았지만, 단편 인수를 어떻게 제공해야하는지는 보이지 않습니다.

은 제가

BurgerListFragment

이 조각이 햄버거의 RecyclerView을 보여줍니다 무엇을 의미하는지의 예를 통해 가자. 기본 어댑터에는 burger를 나타내는 객체 배열이 포함되어 있습니다.

BurgerDetailFragment은

우리는 BurgerListFragment에서 햄버거를 클릭,이 이벤트가 다시 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, 나는 두 조각이 서로 직접 나쁜이지만 그냥이 샘플이며, 사실 다른에와 통신하고 있는지 알고 알려 나는 또 다른 날을 가지고있다.

답변

1

내가이 일을 관리하는 방식은 현재 선택된 데이터를 나타내는 모델의 값을 갖는 것입니다. 당신은 아마도 로컬 데이터베이스에 버거 데이터를 유지하는 것입니다 실제로

MVP Burger Diagram

:

는 희망 다음 그림은 당신에게 무슨 뜻인지의 좋은 아이디어를 제공합니다. BurgerListPresenter은 db를로드 할 모든 버거 목록을 모델에 요청합니다.

사용자가 햄버거를 선택하면 발표자는이 데이터를 다시 모델에 넣습니다. 이것은 예를 들어 SharedPrefs에 선택된 버거의 ID로 저장 될 수 있습니다.

BurgerDetailsPresenter은 현재 선택된 버거를 모델에 요청합니다. 모델은 현재 햄버거의 id에 대한 SharedPrefs를 확인한 다음 데이터베이스에서로드합니다.

두 명의 발표자가 그렇듯이 두 개의 조각은 서로를 전혀 알지 못합니다.

관련 문제