先创建 V层接口:
public interface Iview <T>{
void guanlaoin(T t);
}
创建P层接口:
public interface Ip {
}
创建契约类:
public interface Contart {
interface MyP extends Ip{
void login();
}
interface MyV<MyP> extends Iview<MyP>{
void UpView(User user);
}
}
建立P层 实现:
Contart.MyP接口 重新 :
login()方法
在V层实现
Contart.MyV<Contart.MyP>接口
重新
UpView和
guanlaoin方法
在v层
new P(this);
myp.login();
在P层:
myv.guanlaoin(this);
形成V层与P层的一个循环
V层通过:myp.login();先调用p层方法P层通过
myv.UpView(user);给V层传值
M层 定义接口回调
public interface Im {
void qingqiu(Shuju shuju);
interface Shuju{
void shuju(User user);
};
创建M层 实现接口 进行耗时操作
实例:
V层
public class AFragment extends BaseFragment implements Contart.MyV<Contart.MyP>, OnBannerListener {
private View view;
Contart.MyP myp;
private Banner be;
private List<User.BodyBean.ResultBean> result;
public AFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_a, container, false);
return view;
}
@Override
public void UpView(User user) {
ArrayList<String> list = new ArrayList<>();
result = user.getBody().getResult();
for (int i=0;i<result.size();i++){
list.add(result.get(i).getBarnerPic()) ;
}
be.setImageLoader(new Sum());
//添加资源 就是图片集合
be.setImages(list);
//最后开启
be.start();
be.setOnBannerListener(this);
}
@Override
public void guanlaoin(Contart.MyP myP) {
this.myp = myP;
}
private void initView(View view) {
be = (Banner) view.findViewById(R.id.be);
}
@Override
public void OnBannerClick(int position) {
Intent intent = new Intent(getActivity(), Main2Activity.class);
startActivity(intent);
}
@Override
public void onLazyLoad() {
new P(this);
myp.login();
initView(view);
}
}
P层
public class P implements Contart.MyP{
Contart.MyV myv;
private final com.example.lenovo.kaoshi.model.model model;
public P(Contart.MyV myv) {
this.myv=myv;
myv.guanlaoin(this);
model = new model();
}
@Override
public void login() {
Log.e("P", "dcddddddddddd");
model.qingqiu(new Im.Shuju() {
@Override
public void shuju(User user) {
myv.UpView(user);
}
});
}
}
M层
public class model implements Im{
@Override
public void qingqiu(final Shuju shuju) {
Retrofit build = new Retrofit.Builder().baseUrl("https://api.yunxuekeji.cn/").addConverterFactory(GsonConverterFactory.create(new Gson())).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
Tou tou = build.create(Tou.class);
Observable<User> newsInfo = tou.getNewsInfo();
newsInfo.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())//最后在主线程中执行
.subscribe(new Subscriber<User>(){
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e("model", "shibai");
}
@Override
public void onNext(User user) {
shuju.shuju(user);
}
});
}
}