前言
- 使用mvp架构,以及一些常用的库(
mvp_rxjava_retrofit(okhttp)_greendao_gson_butterknife_logger_sweet-alert-dialog_picasso
),实现一个获取豆瓣音乐列表、记录搜索历史(历史记录自动换行排列)的简单demo。 - demo逻辑和代码都很简单,差不多是google官方架构的简化,不做累述了。
- 主要用于个人积累及分享,如有错误请随时指出,文中可能引用其他大牛文章(仅引用链接不转载),如有侵权请告知必妥善处理。
正文
资源
demo地址
mvp架构google官方链接
相关库来源链接
RxJava、RxAndroid、retrofit、okhttp、greenDAO、gson、butterknife、logger、sweet-alert-dialog、picasso
mvp架构搭建
View(V)和Presenter(P)基础接口:
public interface BaseView <T> {
void setPresenter(T presenter);
}
public interface BasePresenter{
void start();
}
项目介绍
demo包含一个主Activity(ManActivity),两个Fragment(ResultFragment,SearchFragment)。ManActivity仅负责添加和简单控制ResultFragment,SearchFragment。ResultFragment是第一个页面,负责根据关键字获取和展示结果;SearchFragment是第二个界面,负责输入、保存、展示关键字。点击ResultFragment上部搜索框进入SearchFragment。
创建
ResultContact类、SearchContact类,其中各有两个接口,配置和管理V(extend BaseView)、P(extend BasePresenter)的接口方法,供实例类V、P实现。
public class ResultContact { interface Presenter extends BasePresenter { void getMusicListByKw(String kw); } interface View extends BaseView<Presenter> { void showMusicList(List<MusicBean> list); } }
public class SearchContact { interface Presenter extends BasePresenter { void saveKwToDB(Context context, String kw); Observable<List<Keyword>> getKwFromDB(Context context); } interface View extends BaseView<Presenter> { } }
ResultFragment、ResultPresenter、SearchFragment、SearchPresenter,实现ResultContact、SearchContact中各自的接口。这里代码不贴了,请看demo。
rxjava+retrofit(okhttp)
位于demo中sp.com.mvpdemo.retrofit包
greendao
位于sp.com.mvpdemo.greendao包,其中auto包为自动生成,详见gradle配置
AutoFeedView自动换行排列的历史关键字
位于sp.com.mvpdemo.my_views包
AutoFeedView.java中有交详细注释,原理就是一个一个关键字往后排,计算父控件宽度,超出则换行排列。目前未发现bug。