每日冲刺7
mvp框架应用到项目当中
package com.llw.mvpdemo.application; import android.app.Application; import com.llw.mvplibrary.BuildConfig; import com.llw.mvplibrary.network.INetworkRequiredInfo; /** * 网络访问信息 * @author llw */ public class NetworkRequiredInfo implements INetworkRequiredInfo { private Application application; public NetworkRequiredInfo(Application application){ this.application = application; } /** * 版本名 */ @Override public String getAppVersionName() { return BuildConfig.VERSION_NAME; } /** * 版本号 */ @Override public String getAppVersionCode() { return String.valueOf(BuildConfig.VERSION_CODE); } /** * 是否为debug */ @Override public boolean isDebug() { return BuildConfig.DEBUG; } /** * 应用全局上下文 */ @Override public Application getApplicationContext() { return application; } }
package com.llw.mvpdemo.application; import com.llw.mvplibrary.BaseApplication; import com.llw.mvplibrary.network.NetworkApi; /** * 自定义Application * @author llw */ public class MyApplication extends BaseApplication { @Override public void onCreate() { super.onCreate(); //初始化 NetworkApi.init(new NetworkRequiredInfo(this)); } }
public class WallPaperResponse { private String msg; private ResBean res; private int code; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public ResBean getRes() { return res; } public void setRes(ResBean res) { this.res = res; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public static class ResBean { private List<VerticalBean> vertical; public List<VerticalBean> getVertical() { return vertical; } public void setVertical(List<VerticalBean> vertical) { this.vertical = vertical; } public static class VerticalBean { private String preview; private String thumb; private String img; private int views; private String rule; private int ncos; private int rank; private String source_type; private String wp; private boolean xr; private boolean cr; private int favs; private double atime; private String id; private String store; private String desc; private List<String> cid; private List<?> tag; private List<?> url; public String getPreview() { return preview; } public void setPreview(String preview) { this.preview = preview; } public String getThumb() { return thumb; } public void setThumb(String thumb) { this.thumb = thumb; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public int getViews() { return views; } public void setViews(int views) { this.views = views; } public String getRule() { return rule; } public void setRule(String rule) { this.rule = rule; } public int getNcos() { return ncos; } public void setNcos(int ncos) { this.ncos = ncos; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } public String getSource_type() { return source_type; } public void setSource_type(String source_type) { this.source_type = source_type; } public String getWp() { return wp; } public void setWp(String wp) { this.wp = wp; } public boolean isXr() { return xr; } public void setXr(boolean xr) { this.xr = xr; } public boolean isCr() { return cr; } public void setCr(boolean cr) { this.cr = cr; } public int getFavs() { return favs; } public void setFavs(int favs) { this.favs = favs; } public double getAtime() { return atime; } public void setAtime(double atime) { this.atime = atime; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getStore() { return store; } public void setStore(String store) { this.store = store; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public List<String> getCid() { return cid; } public void setCid(List<String> cid) { this.cid = cid; } public List<?> getTag() { return tag; } public void setTag(List<?> tag) { this.tag = tag; } public List<?> getUrl() { return url; } public void setUrl(List<?> url) { this.url = url; } } } }
package com.llw.mvpdemo.contract; import android.annotation.SuppressLint; import com.llw.mvpdemo.api.ApiService; import com.llw.mvpdemo.bean.GankResponse; import com.llw.mvplibrary.base.BasePresenter; import com.llw.mvplibrary.base.BaseView; import com.llw.mvplibrary.network.NetworkApi; import com.llw.mvplibrary.network.observer.BaseObserver; /** * 将V与M订阅起来 * @author llw */ public class MainContract { public static class MainPresenter extends BasePresenter<IMainView> { @SuppressLint("CheckResult") public void getWallPaper(){ ApiService service = NetworkApi.createService(ApiService.class); service.getWallPaper().compose(NetworkApi.applySchedulers(new BaseObserver<WallPaperResponse>() { @Override public void onSuccess(WallPaperResponse wallPaperResponse) { if (getView() != null) { getView().getWallPaper(wallPaperResponse); } } @Override public void onFailure(Throwable e) { if (getView() != null) { getView().getWallPaperFailed(e); } } })); } } public interface IMainView extends BaseView { void getWallPaper(WallPaperResponse wallPaperResponse); //获取列表失败返回 void getWallPaperFailed(Throwable e); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimary" tools:context=".MainActivity"> <!--列表--> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never" android:padding="5dp" android:scrollbars="none" /> </LinearLayout>
/** * 初始化列表 */ private void initList() { RecyclerView rv = findViewById(R.id.rv); //配置rv mAdapter = new WallPaperAdapter(mList); rv.setLayoutManager(new GridLayoutManager(context,2)); rv.setAdapter(mAdapter); //请求列表数据 mPresenter.getWallPaper(); } /** * 获取壁纸返回 * * @param wallPaperResponse */ @Override public void getWallPaper(WallPaperResponse wallPaperResponse) { List<WallPaperResponse.ResBean.VerticalBean> vertical = wallPaperResponse.getRes().getVertical(); if (vertical != null && vertical.size() > 0) { mList.clear(); mList.addAll(vertical); mAdapter.notifyDataSetChanged(); } else { showMsg("数据为空"); } hideLoadingDialog(); } /** * 获取列表数据异常 * * @param e */ @Override public void getWallPaperFailed(Throwable e) { KLog.e(TAG,e.toString()); showMsg("获取列表数据异常,具体日志信息请查看日志"); hideLoadingDialog(); }
这部分内容具体不太了解,根据网上教程进行,不过最终调用成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南