MVP解绑

public interface lhModel {
    void  loadData(HomeDataCallback callback);
    interface  HomeDataCallback{
         void complete(List name);
    }
}


public class HomeModel implements lhModel {

    @Override
    public void loadData(HomeDataCallback callback) {
        List  list = new ArrayList();
        for (int i = 0;i<30;i++){
            list.add("数据"+i);
        }
        callback.complete(list);
    }
}


public interface  IPresenter<T> {
    void attach(T view);
    void detach();
}
public class Homepersenter implements IPresenter<HmView> {
    private HomeModel model;
    //双层保证 不会出现内存泄漏
    //1、软引用  在内存不足时会回收   如果Activity意外终止 使用该方式能保证
    public WeakReference<HmView>  mRefView;
    //2、通过手动的方式直接释放  activity销毁时直接回收
    public Homepersenter(HmView view) {
        this.model = new HomeModel();
        attach(view);
    }
    //进行和View层的绑定  activity
    @Override
    public void attach(HmView view) {
       mRefView = new WeakReference<HmView>(view);
    }
    //和View层解绑
    @Override
    public void detach() {
        mRefView.clear();
        Log.e("info","解绑");
    }
    public  void  showListData(){
        model.loadData(new lhModel.HomeDataCallback() {
            @Override
            public void complete(List list) {
                mRefView.get().showListData(list);
            }
        });
    }
}


public interface HmView {
    void showListData(List name);
}
 
public class MainActivity extends AppCompatActivity implements HmView {


    private Homepersenter persenter;
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        persenter = new Homepersenter(this);
        persenter.showListData();



    }
    @Override
    public void showListData(List name) {
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,name);
        lv.setAdapter(adapter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        persenter.detach();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值