MVP
View层
public interface SearchViewIm {
public abstract class IPresenter{
public abstract void Right(HashMap<String,String> map);
}
public interface IModel{
public abstract void Right(HashMap<String,String>map,SearchModel.ModelCallBack callBack);
}
public interface IView{
public void RightSuccess(String result);
public void RightFail(String message);
}
}
Model层
public class SearchModel implements SearchViewIm.IModel {
private String value;
private String key;
@Override
public void Right(HashMap<String, String> map, final SearchModel.ModelCallBack callBack) {
for (Map.Entry<String,String>p:map.entrySet()){
value = p.getValue();
key = p.getKey();
}
String s = SearchApi.RightApi + value + "";
OkHttpUtils.getUtils().doGet(s, new OkHttpCallBack() {
@Override
public void Success(String result) {
callBack.Success(result);
}
@Override
public void Fail(String message) {
callBack.Fail(message);
}
});
}
public interface ModelCallBack {
public void Success(String result);
public void Fail(String message);
}
}
Presenter层
public class SearchPresenter extends SearchViewIm.IPresenter {
private SearchViewIm.IView iView;
private SearchModel model;
public SearchPresenter(SearchViewIm.IView iView) {
this.iView = iView;
model = new SearchModel();
}
@Override
public void Right(HashMap<String, String> map) {
model.Right(map, new SearchModel.ModelCallBack() {
@Override
public void Success(String result) {
iView.RightSuccess(result);
}
@Override
public void Fail(String message) {
iView.RightFail(message);
}
});
}
}
工具类接口
public interface OkHttpCallBack {
public void Success(String result);
public void Fail(String message);
}
工具类
public class OkHttpUtils {
private OkHttpClient client;
private static OkHttpUtils utils;
private Handler handler = new Handler();
public static OkHttpUtils getUtils(){
if (utils == null){
synchronized (OkHttpUtils.class){
if (utils == null){
utils = new OkHttpUtils();
}
}
}
return utils;
}
private OkHttpUtils(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.writeTimeout(5,TimeUnit.SECONDS)
.connectTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.build();
}
public void doGet(String Url, final OkHttpCallBack callBack){
Request request = new Request.Builder().url(Url).get().build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
callBack.Fail("网络连接失败");
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.code() == 200){
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.Success(string);
}
});
}
}
});
}
public void doPost(String Url, HashMap<String,String>map, final OkHttpCallBack callBack){
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String,String>p:map.entrySet()){
builder.add(p.getKey(),p.getValue());
}
FormBody body = builder.build();
Request request = new Request.Builder().url(Url).post(body).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callBack.Fail("网络连接失败");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (callBack != null){
if (response.code() == 200){
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.Success(string);
}
});
}
}
}
});
}
}
主页面
public class MainActivity extends AppCompatActivity implements SearchViewIm.IView {
private Search_view mainSearchView;
private XRecyclerView mainRecycler;
private Button button;
private EditText editText;
private SearchAdapter adapter;
private SearchPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.search_view_but);
editText = findViewById(R.id.search_view_edit);
mainSearchView = findViewById(R.id.main_search_view);
mainRecycler = findViewById(R.id.main_recycler);
mainRecycler.setLayoutManager(new GridLayoutManager(this,2));
HashMap<String,String>map = new HashMap<>();
map.put("keyword","板鞋");
presenter = new SearchPresenter(this);
presenter.Right(map);
button.setOnClickListener(new View.OnClickListener() {
private String trim;
@Override
public void onClick(View v) {
aa();
}
private void aa() {
trim = editText.getText().toString().trim();
if (trim.equals("")){
Toast.makeText(MainActivity.this,"关键字不能为空",Toast.LENGTH_SHORT).show();
return;
}
HashMap<String,String>map = new HashMap<>();
map.put("name",trim);
presenter.Right(map);
}
});
}
@Override
public void RightSuccess(String result) {
SearchBean bean = new Gson().fromJson(result, SearchBean.class);
adapter = new SearchAdapter(this);
adapter.setList(bean.getResult());
mainRecycler.setAdapter(adapter);
}
@Override
public void RightFail(String message) {
}
}