//***列表展示的网络工具类
public class RetrofitUtils {
private Retrofit retrofit;
//单例模式
public static final class SINGLE_INSTANCE {
public static final RetrofitUtils _INSTANCE = new RetrofitUtils();
}
//方法请求
public static RetrofitUtils getInstance() {
return SINGLE_INSTANCE._INSTANCE;
}
private RetrofitUtils() {
retrofit = new Retrofit.Builder()
.baseUrl(StringUrl.HOME_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(buildOkhttpClient())
.build();
}
//设置读写超时
private OkHttpClient buildOkhttpClient() {
return new OkHttpClient.Builder()
.writeTimeout(3000, TimeUnit.MILLISECONDS)
.readTimeout(3000, TimeUnit.MILLISECONDS)
.build();
}
public Retrofit getRetrofit() {
return retrofit;
}
public <T> T create(Class<T> clazz) {
return retrofit.create(clazz);
}
}
//***登录注册的网络工具类
public class LoginOkHttpUtils {
private static LoginOkHttpUtils instance;
private Retrofit retrofit;
public LoginOkHttpUtils(){
init();
}
public static LoginOkHttpUtils getInstance(){
if (instance ==null){
instance = new LoginOkHttpUtils();
}
return instance;
}
private void init() {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build();
retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(StringUrl.LOGIN_URL)
.client(client)
.build();
}
//把接口的注解翻译为OKhttp请求
public <T> T create(final Class<T> service) {
return retrofit.create(service);
}
//***请求方式
public interface ApiService {
/**
* 登录
* @param phone
* @param pwd
* @return
*/
@POST("login")
@FormUrlEncoded
Observable<ILogin<Login>> getlogin(@Field("phone") String phone,@Field("pwd")String pwd);
/**
* 注册
* @param phone
* @param pwd
* @return
*/
@POST("register")
@FormUrlEncoded
Observable<ILogin<Login>> getregister(@Field("phone") String phone,@Field("pwd") String pwd);
/**
* 首页
* @return
*/
@GET("commodity/v1/commodityList")
Observable<Home> gethomes();
}
//***接口
public interface DataCall{
void onSuccesspzsh(Home home);
}
M层
public class HomeModel {
ApiService apiService = RetrofitUtils.getInstance().create(ApiService.class);
public Observable<Home> gethome(){
Observable<Home> gethomes = apiService.gethomes();
return gethomes;
}
}
P层
public class HomePresenter {
private HomeView view;
private HomeModel model;
public void attach(HomeView view){
this.view = view;
model = new HomeModel();
}
public void showhomerxxp(){
model.gethome()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Home>() {
@Override
public void accept(Home home) throws Exception {
if (home !=null){
view.onSuccessrxxp(home);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
view.onFailed(new Exception("网络异常"));
}
});
}
}
//***列表展示的fragment
public class HomesFragment extends Fragment implements HomeView {
@BindView(R.id.fragment_home_dialog)
ImageButton fragmentHomeDialog;
@BindView(R.id.fragment_home_search)
SearchView fragmentHomeSearch;
@BindView(R.id.fragment_home_sou)
ImageButton fragmentHomeSou;
@BindView(R.id.fragment_home_banner)
Banner fragmentHomeBanner;
@BindView(R.id.fragment_home_rxxp_d)
ImageView fragmentHomeRxxpD;
@BindView(R.id.fragment_home_xxxp_recy)
RecyclerView fragmentHomeXxxpRecy;
@BindView(R.id.fragment_home_mlss_d)
ImageView fragmentHomeMlssD;
@BindView(R.id.fragment_home_mlss_recy)
RecyclerView fragmentHomeMlssRecy;
@BindView(R.id.fragment_home_pzsh_d)
ImageView fragmentHomePzshD;
@BindView(R.id.fragment_home_pzsh_recy)
RecyclerView fragmentHomePzshRecy;
Unbinder unbinder;
private List<Home.ResultBean.RxxpBean.CommodityListBean> rxxpList;
private List<Home.ResultBean.MlssBean.CommodityListBeanXX> mlssList;
private List<Home.ResultBean.PzshBean.CommodityListBeanX> pzshList;
private HomePresenter homePresenter;
private Fragment_Home_Rxxp_Adapter home_rxxp_adapter;
private Fragment_Home_Mlss_Adapter home_mlss_adapter;
private Fragment_Home_Pzsh_Adapter home_pzsh_adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_homes, container, false);
unbinder = ButterKnife.bind(this, view);
initData();
return view;
}
private void initData() {
rxxpList = new ArrayList<>();
mlssList = new ArrayList<>();
pzshList = new ArrayList<>();
RecyclerView.LayoutManager manager1 = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL);
fragmentHomeXxxpRecy.setLayoutManager(manager1);
home_rxxp_adapter = new Fragment_Home_Rxxp_Adapter(getActivity(),rxxpList);
fragmentHomeXxxpRecy.setAdapter(home_rxxp_adapter);
homePresenter = new HomePresenter();
homePresenter.attach(this);
homePresenter.showhomerxxp();
RecyclerView.LayoutManager manager2 = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
fragmentHomeMlssRecy.setLayoutManager(manager2);
home_mlss_adapter = new Fragment_Home_Mlss_Adapter(getActivity(),mlssList);
fragmentHomeMlssRecy.setAdapter(home_mlss_adapter);
homePresenter = new HomePresenter();
homePresenter.attach(this);
homePresenter.showhomemlss();
RecyclerView.LayoutManager manager3 = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
fragmentHomePzshRecy.setLayoutManager(manager3);
home_pzsh_adapter = new Fragment_Home_Pzsh_Adapter(getActivity(),pzshList);
fragmentHomePzshRecy.setAdapter(home_pzsh_adapter);
homePresenter = new HomePresenter();
homePresenter.attach(this);
homePresenter.showhomepzsh();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@OnClick({R.id.fragment_home_dialog, R.id.fragment_home_sou, R.id.fragment_home_rxxp_d, R.id.fragment_home_mlss_d, R.id.fragment_home_pzsh_d})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.fragment_home_dialog:
break;
case R.id.fragment_home_sou:
break;
case R.id.fragment_home_rxxp_d:
break;
case R.id.fragment_home_mlss_d:
break;
case R.id.fragment_home_pzsh_d:
break;
}
}
@Override
public void onSuccessrxxp(Home home) {
if (home !=null){
Home.ResultBean result = home.getResult();
List<Home.ResultBean.RxxpBean> rxxp = result.getRxxp();
List<Home.ResultBean.RxxpBean.CommodityListBean> commodityrxxp = rxxp.get(0).getCommodityList();
rxxpList.clear();
rxxpList.addAll(commodityrxxp);
home_rxxp_adapter.notifyDataSetChanged();
}
}
@Override
public void onSuccessmlss(Home home) {
if (home !=null){
Home.ResultBean result = home.getResult();
List<Home.ResultBean.MlssBean> mlss = result.getMlss();
List<Home.ResultBean.MlssBean.CommodityListBeanXX> commoditymlss = mlss.get(0).getCommodityList();
mlssList.clear();
mlssList.addAll(commoditymlss);
home_mlss_adapter.notifyDataSetChanged();
}
}
@Override
public void onSuccesspzsh(Home home) {
if (home !=null){
Home.ResultBean result = home.getResult();
List<Home.ResultBean.PzshBean> pzsh = result.getPzsh();
List<Home.ResultBean.PzshBean.CommodityListBeanX> commoditypzsh = pzsh.get(0).getCommodityList();
pzshList.clear();
pzshList.addAll(commoditypzsh);
home_pzsh_adapter.notifyDataSetChanged();
}
}
@Override
public void onFailed(Exception e) {
Log.i("000", "onFiled: " + e.getMessage());
}
}
//登录的
case R.id.login_button:
username = loginPhone.getText().toString().trim();
password = loginPassword.getText().toString().trim();
if (TextUtils.isEmpty(username)&& TextUtils.isEmpty(password)) {
Toast.makeText(this, "账号和密码不能为空", Toast.LENGTH_SHORT).show();
} else {
ApiService apiService = LoginOkHttpUtils.getInstance().create(ApiService.class);
apiService.getlogin(username,password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ILogin<Login>>() {
@Override
public void accept(ILogin<Login> loginILogin) throws Exception {
if (loginILogin.getStatus().equals("0000")){
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
}
}
});
}
break;