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
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);        }    }}
//最后几个login类


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() {    }}


原创粉丝点击