一個簡單的MVP框架
阿新 • • 發佈:2018-12-30
MainActivity程式碼
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.GridView; import android.widget.ListView; import com.google.gson.Gson; import com.li.lenovo.rikao02.adapter.MyAdapterMagic; import com.li.lenovo.rikao02.bean.MylistBean; import com.li.lenovo.rikao02.home.present.HomeListPresenter; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //獲取控制元件 mTextView = findViewById(R.id.mTextView); //初始化連結present HomeListPresenter homeListPresenter = new HomeListPresenter(this); homeListPresenter.getPresenterData(); } //建立view介面 public void getView(String mView) { mTextView.setText(mView); } }
model層跟介面
import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class HomeListModeInter implements IHomeListModeInter { ModuleInterface moduleInterface; public HomeListModeInter(ModuleInterface moduleInterface) { this.moduleInterface = moduleInterface; } @Override public void getModelData(final String url) { OKhttp.getokhttpget(url, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { moduleInterface.LoadSuccess(response.body().string()); } }); } //定義介面 public interface ModuleInterface { void LoadSuccess(String data); void LoadFailed(); } }
model介面
public interface IHomeListModeInter {
public void getModelData(String url);
}
P層類跟介面
import com.li.lenovo.rikao02.MainActivity; import com.li.lenovo.rikao02.api.Api; import com.li.lenovo.rikao02.home.model.HomeListModeInter; public class HomeListPresenter implements IHomeListPresenter, HomeListModeInter.ModuleInterface { //view MainActivity mainActivity; private final HomeListModeInter homeListModeInter; public HomeListPresenter(MainActivity mainActivity) { this.mainActivity = mainActivity; homeListModeInter = new HomeListModeInter(this); } @Override public void getPresenterData() { homeListModeInter.getModelData(Api.SHOPLIST); } @Override public void LoadSuccess(String data) { mainActivity.getView(data); } @Override public void LoadFailed() { mainActivity.getView("載入失敗"); } }
P層介面
public interface IHomeListPresenter {
public void getPresenterData();
}
v層介面
public interface IHomeListView {
public void getViewData(String ViewData);
}
工具類
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class OKhttp {
private static OkHttpClient okHttpClient;
private static Request request;
//okhttp get非同步請求方法
public static void getokhttpget(String url, Callback callback) {
okHttpClient = new OkHttpClient();
request = new Request.Builder()
.url(url)
.method("GET", null)
.build();
okHttpClient.newCall(request).enqueue(callback);
}
}