您的位置:首页 > 编程语言 > Java开发

结合retrofit和rxjava的使用

2017-12-10 18:32 411 查看
  BasePresenter

public class BasePresenter<V>  {

    public V view;

    public void Attach(V view){

        this.view=view;

    }

    public void dettach(){

        this.view=null;

    }

}

   BaseActivity

public abstract class BaseActivity<V,P extends BasePresenter<V>> extends Activity {

    public P presenter;

    public abstract P initpresenter();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        presenter=initpresenter();

    }

    @Override

    protected void onResume() {

        super.onResume();

        presenter.Attach((V)this);

    }

    @Override

    protected void onDestroy() {

        super.onDestroy();

        presenter.dettach();

    }

}

    MyApplication 

public class MyApplication extends Application {

    @Override

    public void onCreate() {

        super.onCreate();

        Fresco.initialize(this);

    }

}

    MyMolde 

public class MyMolde {

    public void GetDataFromNet(String key, String num, AbstractObserver<Bean> observer){

        Map<String,String> map=new HashMap<>();

        map.put("key",key);

        map.put("num",num);

        APIFactory.getInstance().get("nba/",map,observer);

    }

}

   MyPresenter 

public class MyPresenter extends BasePresenter<IView> {

    public MyMolde molde;

    public MyPresenter() {

        molde=new MyMolde();

    }

    public void getNow(int num){

        molde.GetDataFromNet("71e58b5b2f930eaf1f937407acde08fe", num + "", new AbstractObserver<Bean>() {

            @Override

            public void onSuccess(Bean bean) {

            view.showdata(bean);

            }

            @Override

            public void onFailure(int code) {

            }

        });

    }
}

    IView

public interface IView {

    public void showdata(Bean bean);

}

    MainActivity 

public class MainActivity extends BaseActivity<IView,MyPresenter> implements IView {

    Handler handler=new Handler();

    @BindView(R.id.xrv)

    XRecyclerView xrv;

    int num=20;

    @Override

    public MyPresenter initpresenter() {

        return new MyPresenter();

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);

        presenter.getNow(20);

        xrv.setLayoutManager(new LinearLayoutManager(this));

    }

    @Override

    public void showdata(Bean bean) {

        final MyAdapter adapter=new MyAdapter(this,bean);

        xrv.setAdapter(adapter);

        xrv.setLoadingListener(new XRecyclerView.LoadingListener() {

            @Override

            public void onRefresh() {

                presenter.getNow(20);

                adapter.notifyDataSetChanged();

                xrv.refreshComplete();

            }

            @Override

            public void onLoadMore() {

            handler.postDelayed(new Runnable() {

                @Override

                public void run() {

                    num=num+5;

                    presenter.getNow(num);

                    adapter.notifyDataSetChanged();

                    xrv.loadMoreComplete();

                }

            },2000);

            }

        });

    }

    @Override

    protected void onResume() {

        super.onResume();

        presenter.Attach(this);

    }

    @Override

    protected void onDestroy() {

        super.onDestroy();

        presenter.dettach();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: