BaseMvp+rxjava+retrofit+recyclerview
来源:互联网 发布:阿里云主机免费试用 编辑:程序博客网 时间:2024/06/06 07:17
1.创建BasePresenter类
public class BasePresenter<V> { public V view; public void attach(V v){ this.view = v; } public void dttach(){ this.view = null; }}
2.创建BaseMvpActivity类
//最后几个login类public abstract class BaseMvpActivity<V,T extends BasePresenter<V>> extends Activity {public T t; public abstract T initPresenter(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); t=initPresenter(); } @Override protected void onResume() { super.onResume(); t.attach((V) this); } @Override protected void onDestroy() { super.onDestroy(); t.dttach(); }}3.创建Bean类public class Bean {
private int code; private String msg; private List<NewslistBean> newslist; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public List<NewslistBean> getNewslist() { return newslist; } public void setNewslist(List<NewslistBean> newslist) { this.newslist = newslist; } public static class NewslistBean { /** * ctime : 2016-12-04 13:00 * title : 格林:理解科尔吸食大麻 不过我从没吸过 * description : NBA新闻 * picUrl : http://www.51tyw.com/uploads/allimg/161204/1-161204120131.jpg * url : http://www.51tyw.com/nba/2421.html */ private String ctime; private String title; private String description; private String picUrl; private String url; public String getCtime() { return ctime; } public void setCtime(String ctime) { this.ctime = ctime; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getPicUrl() { return picUrl; } public void setPicUrl(String picUrl) { this.picUrl = picUrl; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } } @Override public String toString() { return "Bean{" + "code=" + code + ", msg='" + msg + '\'' + ", newslist=" + newslist + '}'; }}private int code; private String msg; private List<NewslistBean> newslist; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public List<NewslistBean> getNewslist() { return newslist; } public void setNewslist(List<NewslistBean> newslist) { this.newslist = newslist; } public static class NewslistBean { /** * ctime : 2016-12-04 13:00 * title : 格林:理解科尔吸食大麻 不过我从没吸过 * description : NBA新闻 * picUrl : http://www.51tyw.com/uploads/allimg/161204/1-161204120131.jpg * url : http://www.51tyw.com/nba/2421.html */ private String ctime; private String title; private String description; private String picUrl; private String url; public String getCtime() { return ctime; } public void setCtime(String ctime) { this.ctime = ctime; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getPicUrl() { return picUrl; } public void setPicUrl(String picUrl) { this.picUrl = picUrl; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } } @Override public String toString() { return "Bean{" + "code=" + code + ", msg='" + msg + '\'' + ", newslist=" + newslist + '}'; }}4创建IAppliction类public class IAppliction extends Application { public static IInterface iInterface; @Override public void onCreate() { super.onCreate(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); iInterface = retrofit.create(IInterface.class); }}5创建IInterface类public interface IInterface { @GET("/nba") Observable<Bean> get(@QueryMap Map<String,String> map); @POST("/nba") Observable<Bean> post(@FieldMap Map<String,String> map)}6.创建HomeAdapter类public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> { Context context; List<Bean.NewslistBean> list; public HomeAdapter(Context context, List<Bean.NewslistBean> list) { this.context = context; this.list = list; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context) .inflate(R.layout.item_home, parent,false); TextView textView = (TextView) view.findViewById(R.id.tv); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { //Toast.makeText(context,""+position,Toast.LENGTH_SHORT).show(); holder.tv.setText(list.get(position).getTitle());} @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); } }}
类
public interface LoginView { void success(Bean bean); void failed();}
类
public interface LoginModelCallBack { void success(Bean bean);}
类
public class LoginModelImpl { public void getData(final LoginModelCallBack callBack){ Map<String,String> map = new HashMap<>(); map.put("key","71e58b5b2f930eaf1f937407acde08fe"); map.put("num","10"); Observable<Bean> beanObservable = IAppliction.iInterface.get(map); beanObservable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Bean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Bean bean) { callBack.success(bean); } }); }}
类
public class LoginPresenter extends BasePresenter<LoginView> { public LoginModelImpl loginModel; public LoginPresenter() { this.loginModel = new LoginModelImpl(); } public void login(String username,String password){ loginModel.getData(new LoginModelCallBack() { @Override public void success(Bean bean) { view.success(bean); } }); }}
类
public class MainActivity extends BaseMvpActivity<LoginView,LoginPresenter> implements LoginView { RecyclerView rv; @Override public LoginPresenter initPresenter() { return new LoginPresenter(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rv = (RecyclerView) findViewById(R.id.lv); rv.setLayoutManager(new LinearLayoutManager(this)); findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { t.login("username","password"); } }); } @Override public void success(Bean bean) { System.out.println("---------"+bean);// ListAdapter listAdapter = new ListAdapter(MainActivity.this, bean.getNewslist()); HomeAdapter homeAdapter = new HomeAdapter(MainActivity.this, bean.getNewslist()); rv.setAdapter(homeAdapter); } @Override public void failed() { }}
类
阅读全文
0 0
- BaseMvp+rxjava+retrofit+recyclerview
- RxJava+Retrofit+Recyclerview的实现
- MVP+Retrofit+RxJava+fresco+RecyclerView
- retrofit和Rxjava结合 recyclerview的应用
- 用RXJava,java8,Retrofit,RecyclerView显示
- MVP泛型+RecyclerView+Retrofit+OkHttp+RxJava
- retrofit+rxjava+recyclerview+下拉刷新+自动加载更多
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- RxJava+MVP+轮播+retrofit+条目点击+recyclerView
- MVP+Retrofit+Rxjava+ButterKnife+Fresco+Recyclerview+GreenDao+泛型+完整Demo
- MVP+retrofit和Rxjava请求数据+recyclerview展示
- MVp+RXJava+Retrofit+RecyclerView展示首页和详情页
- Retrofit+Rxjava
- Retrofit+RxJava
- Retrofit+RxJava
- Retrofit+RxJava
- Retrofit+RxJava
- RxJava+Retrofit
- iOS一套代码适配所有iPhone手机布局实现方案
- JAVA常见异常解析
- 动态规划:求最长公共子串/最长公共子序列
- Error:Failed to resolve: com.android.support:support-annotations:27.0.1
- 初学MySql的一些过程
- BaseMvp+rxjava+retrofit+recyclerview
- 新手村 过程函数与递归 火柴棒等式
- datagrid编辑一个单元格,另一个单元格动态变值
- java项目经验面试总结
- 使用动态代理完成字符集编码过滤器的编写
- java与软件测试哪个好?
- SLA文档理论部分总结
- kettle保存资源库报错:一个数据库错误发生在从资源库文件读取转换时
- Ubuntu QT4 安装以及各个安装工具介绍