2017-11-22 4 views
-2

Ich bin MVP-Architektur implementieren, Code funktioniert gut, ich wollte Ihre Vorschläge, wenn ich dort Verbesserungen vorgenommen werden kann oder in Bereichen, in denen ich nicht das Muster richtig befolge.Verbesserungen bei der Implementierung von MVP in Android

Es ist eine einfache Anwendung mit RecyclerViews, um Spiele in einem Fragment aufzulisten.

FGames - Fragment, das die Liste der Spiele zeigt

public class FGames extends Fragment implements GamesView { 

    @BindView(R.id.rv_games) 
    RecyclerView rvGames; 
    private GamesAdapter gamesAdapter; 
    private GamesPresenterImpl presenter; 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.games_layout, container, false); 
     ButterKnife.bind(this, view); 
     presenter = new GamesPresenterImpl(this); 
     return view; 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     presenter.initUi(); 
    } 

    @Override 
    public void initRecyclerView(List<GameEntity> gameEntities) { 
     gamesAdapter = new GamesAdapter(getActivity(), gameEntities); 
     rvGames.setAdapter(gamesAdapter); 
     rvGames.setLayoutManager(new LinearLayoutManager(getActivity())); 
    } 
} 

Schnittstelle - GamesView

public interface GamesView { 

     /** 
     * Initialise the recycler view to list Games data 
     * @param gameEntities 
     */ 
     void initRecyclerView(List<GameEntity> gameEntities); 
    } 

GamesPresenterImpl - Moderator Implementierung

public class GamesPresenterImpl implements GamesPresenter { 

    GamesView gamesView; 

    public GamesPresenterImpl(GamesView gamesView) { 
     this.gamesView = gamesView; 
    } 

    @Override 
    public void initUi() { 
     gamesView.initRecyclerView(getGamesData()); 
    } 

    public List<GameEntity> getGamesData() { 
     List<GameEntity> gameEntities = new ArrayList<>(); 
     int counter = 0; 
     for(int i = 0; i<10; i++){ 
      GameEntity gameEntity = new GameEntity(); 
      counter ++; 
      gameEntity.setName("Test name " + counter); 
      gameEntity.setJackpot(100000055); 
      gameEntities.add(gameEntity); 
     } 
     return gameEntities; 
    } 
} 

Schnittstelle - GamesPresenter

Vielen Dank im Voraus R

+1

Code-Reviews gehen auf codereview.stackexchange.com –

+0

war bewegen werde ich nie, dass man sich bewusst. Vielen Dank. Warum eine Down-Abstimmung? – BRDroid

+1

initUi() ist Teil der UI ist nicht in der Presenter-Klasse. Es sollte in der Aktivitätsklasse sein. –

Antwort

0

können Sie eine dritte Schicht, wo Sie alle Daten hinzufügen können, holen (API/Datenbank) Logik. Siehe http://www.vogella.com/tutorials/AndroidArchitecture/article.html

So Ihre Daten Bevölkerung teilweise auf die dritte Schicht

for(int i = 0; i<10; i++){ 
    GameEntity gameEntity = new GameEntity(); 
    counter ++; 
      gameEntity.setName("Test name " + counter); 
      gameEntity.setJackpot(100000055); 
      gameEntities.add(gameEntity); 
} 
Verwandte Themen