点击吐丝用mvp模式实现--狸菇凉_

model层的u体力是包里的Myutils

presenter层的Basepersenter和Mainpersenter

view层的activity包里的Mainactivity和iview包里的ImvpView和Mainview


utils类中

public class Utils {


    public static void httpGet(String url,UtilsInterface utilsInterface){

        //假象这里已经x.http.get网络请求操作了
        //数据回来
        //需要回掉给p        //通过接口回掉,所以这里需要建立一个借口,在本类直接建立即可,专属utils        utilsInterface.CallBack("哈哈,我是m层的数据");

    }


    public interface UtilsInterface{

        <T>void CallBack(T mclass);

    }

}

Basepersenter类里

public class BasePersenter <T extends IMvpview> {

    private T imvpview;

    public T getImvpview() {
        return imvpview;
    }

    public void setImvpview(T imvpview) {
        this.imvpview = imvpview;
    }



}

Mainpersenter类里

public class Mainpersenter extends BasePersenter<MainInterface> {


    public void getData() {

        //请求数据,数据正规来说从m层毁掉回来
         //在这里进行模拟

        Utils.httpGet("ss", new Utils.UtilsInterface() {
            @Override
            public <T> void CallBack(T mclass) {
               // mclass这个参数就是mutils传过的
               //这个数据需要回掉给v层,所以需要获得v层的引用
                //直接调用父类的getImvpview()方法获得v层的引用

                getImvpview().CallBack((String) mclass);


            }
        });


    }


}

Mainactivity中

public class MainActivity extends AppCompatActivity implements View.OnClickListener,MainInterface{

    private Button btn_;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        btn_ = (Button) findViewById(R.id.btn_);

        btn_.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_:

                Mainpersenter mainpersenter = new Mainpersenter();
                mainpersenter.setImvpview(this);
                mainpersenter.getData();

                break;
        }
    }


    @Override
    public void CallBack(String string) {

        Toast.makeText(this, "vvvv=="+string, Toast.LENGTH_SHORT).show();

    }


}

ImvpView中

public interface IMvpview {


}

MainInterface中

public interface MainInterface extends IMvpview {

    //MainActivity的专属接口,因为需要回掉吐司的数据 ,所以这个抽象方法的参数类型是string类型

    void CallBack(String string);

}









猜你喜欢

转载自blog.csdn.net/hisunyl/article/details/72614609
今日推荐