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(); } }