package io.hefuyi.listener.mvp.presenter; import java.util.List; import io.hefuyi.listener.Constants; import io.hefuyi.listener.mvp.contract.PlayqueueSongContract; import io.hefuyi.listener.mvp.model.Song; import io.hefuyi.listener.mvp.usecase.GetSongs; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; import rx.subscriptions.CompositeSubscription; /** * Created by hefuyi on 2016/12/27. */ public class PlayqueueSongPresenter implements PlayqueueSongContract.Presenter{ private GetSongs mUsecase; private PlayqueueSongContract.View mView; private CompositeSubscription mCompositeSubscription; public PlayqueueSongPresenter(GetSongs getSongs) { mUsecase = getSongs; mCompositeSubscription = new CompositeSubscription(); } @Override public void attachView(PlayqueueSongContract.View view) { mView = view; } @Override public void subscribe() { loadSongs(); } @Override public void unsubscribe() { mCompositeSubscription.clear(); } @Override public void loadSongs() { Subscription subscription = mUsecase.execute(new GetSongs.RequestValues(Constants.NAVIGATE_QUEUE)) .getSongList() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<List<Song>>() { @Override public void call(List<Song> songs) { mView.showSongs(songs); } }); mCompositeSubscription.add(subscription); } }