MianActivity
package com.example.lenovo.weektwo1109;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends AppCompatActivity {
@BindView(R.id.txt_first)
TextView txtFirst;
@BindView(R.id.txt_scot)
TextView txtScot;
@BindView(R.id.txt_find)
TextView txtFind;
@BindView(R.id.txt_cart)
TextView txtCart;
@BindView(R.id.txt_my)
TextView txtMy;
@BindView(R.id.ll_bottom)
LinearLayout llBottom;
@BindView(R.id.vp_fragment)
FrameLayout vpFragment;
private FirstFragment tf;
private SortFragment sf;
private FindFragment ff;
private CartFragment cf;
private MyFragment mf;
private FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initData();
}
private void initData() {
manager = getSupportFragmentManager();
tf = new FirstFragment();
sf = new SortFragment();
ff = new FindFragment();
cf = new CartFragment();
mf = new MyFragment();
manager.beginTransaction()
.add(R.id.vp_fragment,tf)
.commit();
}
@OnClick({R.id.txt_first, R.id.txt_scot, R.id.txt_find, R.id.txt_cart, R.id.txt_my})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.txt_first:
manager.beginTransaction()
.replace(R.id.vp_fragment,tf)
.commit();
break;
case R.id.txt_scot:
manager.beginTransaction()
.replace(R.id.vp_fragment,sf)
.commit();
break;
case R.id.txt_find:
manager.beginTransaction()
.replace(R.id.vp_fragment,ff)
.commit();
break;
case R.id.txt_cart:
manager.beginTransaction()
.replace(R.id.vp_fragment,cf)
.commit();
break;
case R.id.txt_my:
manager.beginTransaction()
.replace(R.id.vp_fragment,mf)
.commit();
break;
}
}
}
API
public interface Api {
@GET("product/getCatagory")
Observable<CataLeft> cataleft1();
@GET("product/getProductCatagory")
Observable<CataRight> cataright1(@Query("cid") int cid);
@GET("product/getProducts")
Observable<DetailBean> detail1(@Query("pscid") int pscid);
}
APP
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化
Fresco.initialize(this);
}
}
public class ImgUtils {
public static String getImg(String url){
String replace = url.replace("https","http");
String[] split = replace.split("\\|");
return split[0];
}
}
RetrofitManager
package com.example.lenovo.weektwo1109.utils;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
*
*/
public class RetrofitManager {
private static final String BASE_URL = "http://www.zhaoapi.cn/";
private Retrofit retrofit;
private static final class SINGLE_INSTANCE{
private static RetrofitManager INSTANCE = new RetrofitManager();
}
public static RetrofitManager getInstance(){
return SINGLE_INSTANCE.INSTANCE;
}
private RetrofitManager(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(buildOkhttpClient())
.build();
}
private OkHttpClient buildOkhttpClient() {
return new OkHttpClient.Builder()
.readTimeout(5000, TimeUnit.MILLISECONDS)
.writeTimeout(5000,TimeUnit.MILLISECONDS)
.build();
}
public Retrofit getRetrofit(){
return retrofit;
}
public <T> T create(Class<T> clazz){
return retrofit.create(clazz);
}
}
IView
public interface IView {
void getCataLeft(CataLeft cataLeft);
void Failed(Throwable t);
void getCataRight(CataRight cataRight);
void getDetail(List<DetailBean.DataBean> list);
}
Model
package com.example.lenovo.weektwo1109.sort.model;
import com.example.lenovo.weektwo1109.sort.bean.CataLeft;
import com.example.lenovo.weektwo1109.sort.bean.CataRight;
import com.example.lenovo.weektwo1109.sort.bean.DetailBean;
import com.example.lenovo.weektwo1109.utils.Api;
import com.example.lenovo.weektwo1109.utils.RetrofitManager;
import io.reactivex.Observable;
/**
*
*/
public class SortModel {
public Observable<CataLeft> cataleft(){
Api api = RetrofitManager.getInstance().create(Api.class);
Observable<CataLeft> cataLeftObservable = api.cataleft1();
return cataLeftObservable;
}
public Observable<CataRight> cataright(int cid){
Api api = RetrofitManager.getInstance().create(Api.class);
Observable<CataRight> cataRightObservable = api.cataright1(cid);
return cataRightObservable;
}
public Observable<DetailBean> detail(int pscid){
Api api = RetrofitManager.getInstance().create(Api.class);
Observable<DetailBean> detailObservable = api.detail1(pscid);
return detailObservable;
}
}
Presenter
package com.example.lenovo.weektwo1109.sort.presenter;
import com.example.lenovo.weektwo1109.sort.bean.CataLeft;
import com.example.lenovo.weektwo1109.sort.bean.CataRight;
import com.example.lenovo.weektwo1109.sort.bean.DetailBean;
import com.example.lenovo.weektwo1109.sort.model.SortModel;
import com.example.lenovo.weektwo1109.sort.view.IView;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
*
*/
public class SortPresenter {
private SortModel model;
private IView iv;
public void attach(IView iv){
this.iv = iv;
model = new SortModel();
}
public void getCataLeft(){
model.cataleft()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<CataLeft>() {
@Override
public void accept(CataLeft cataLeft) throws Exception {
if (cataLeft != null & "0".equals(cataLeft.getCode())) {
if (iv != null)
iv.getCataLeft(cataLeft);
return;
}
if (iv != null)
iv.Failed(new Throwable("网络未响应"));
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if ( iv != null)
iv.Failed(new Throwable("网络异常"));
}
});
}
public void getCataRight(int cid){
model.cataright(cid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<CataRight>() {
@Override
public void accept(CataRight cataRight) throws Exception {
if (cataRight != null & "0".equals(cataRight.getCode())) {
if (iv != null)
iv.getCataRight(cataRight);
return;
}
if (iv != null)
iv.Failed(new Throwable("网络未响应"));
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if ( iv != null)
iv.Failed(new Throwable("网络异常"));
}
});
}
public void getDetail(int id){
model.detail(id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<DetailBean>() {
@Override
public void accept(DetailBean detailBean) throws Exception {
if (detailBean != null & "0".equals(detailBean.getCode())) {
if (iv != null)
iv.getDetail(detailBean.getData());
return;
}
if (iv != null)
iv.Failed(new Throwable("网络未响应"));
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if ( iv != null)
iv.Failed(new Throwable("网络异常"));
}
});
}
}
SortFragment
package com.example.lenovo.weektwo1109.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.lenovo.weektwo1109.R;
import com.example.lenovo.weektwo1109.sort.adapter.LeftAdapter;
import com.example.lenovo.weektwo1109.sort.adapter.MyAdapter;
import com.example.lenovo.weektwo1109.sort.adapter.RightAdapter;
import com.example.lenovo.weektwo1109.sort.bean.CataLeft;
import com.example.lenovo.weektwo1109.sort.bean.CataRight;
import com.example.lenovo.weektwo1109.sort.bean.DetailBean;
import com.example.lenovo.weektwo1109.sort.presenter.SortPresenter;
import com.example.lenovo.weektwo1109.sort.view.DetailActivity;
import com.example.lenovo.weektwo1109.sort.view.IView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
/**
*
*/
public class SortFragment extends Fragment implements IView {
@BindView(R.id.rv_left)
RecyclerView rvLeft;
@BindView(R.id.rv_right)
RecyclerView rvRight;
Unbinder unbinder;
private List<CataLeft.DataBean> list;
private List<CataRight.DataBean> catalist;
private SortPresenter presenter;
private LeftAdapter leftAdapter;
private RightAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_sort, container, false);
unbinder = ButterKnife.bind(this, v);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
presenter = new SortPresenter();
initData();
}
private void initData() {
presenterData();
cataleft();
cataright();
}
private void presenterData() {
presenter.attach(this);
presenter.getCataLeft();
presenter.getCataRight(1);
}
private void cataright() {
catalist = new ArrayList<>();
adapter = new RightAdapter(getActivity(),catalist);
RecyclerView.LayoutManager rlayoutManager = new LinearLayoutManager(getActivity());
rvRight.setLayoutManager(rlayoutManager);
adapter.setChildClickListener(new MyAdapter.OnChildClickListener() {
@Override
public void OnChildClickListener(int posotion, View v) {
for (CataRight.DataBean dataBean : catalist) {
int pscid = dataBean.getList().get(posotion).getPscid();
Intent intent = new Intent(getActivity(), DetailActivity.class);
intent.putExtra("cid",pscid);
startActivity(intent);
return;
}
}
});
rvRight.setAdapter(adapter);
}
private void cataleft() {
list = new ArrayList<>();
//左边适配器
RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(getActivity());
rvLeft.setLayoutManager(layoutManager);
leftAdapter = new LeftAdapter(getActivity(),list);
rvLeft.setAdapter(leftAdapter);
leftAdapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() {
@Override
public void OnClick(View itemView, int position) {
int cid = list.get(position).getCid();
presenter.getCataRight(cid);
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void getCataLeft(CataLeft cataLeft) {
if (cataLeft != null){
list.addAll(cataLeft.getData());
leftAdapter.notifyDataSetChanged();
}
}
@Override
public void Failed(Throwable t) {
}
//右边
@Override
public void getCataRight(CataRight cataRight) {
if (cataRight != null){
catalist.clear();
catalist.addAll(cataRight.getData());
adapter.notifyDataSetChanged();
}
}
@Override
public void getDetail(List<DetailBean.DataBean> list) {
}
}
LeftAdapter
package com.example.lenovo.weektwo1109.sort.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.lenovo.weektwo1109.R;
import com.example.lenovo.weektwo1109.sort.bean.CataLeft;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by lenovo on 2018/11/9.
*/
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.Holder> {
//接口回调
public interface OnItemClickListener{
void OnClick(View itemView,int position);
}
private OnItemClickListener listener;
public void setOnItemClickListener(OnItemClickListener listener){
this.listener = listener;
}
private Context context;
private List<CataLeft.DataBean> list;
public LeftAdapter(Context context, List<CataLeft.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = View.inflate(context, R.layout.sort_left, null);
return new Holder(v);
}
@Override
public void onBindViewHolder(Holder holder, final int position) {
holder.txtTitle.setText(list.get(position).getName());
holder.txtTitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.OnClick(view,position);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class Holder extends RecyclerView.ViewHolder {
@BindView(R.id.txt_title)
TextView txtTitle;
public Holder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
RightAdapter
package com.example.lenovo.weektwo1109.sort.adapter;
import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.example.lenovo.weektwo1109.R;
import com.example.lenovo.weektwo1109.sort.bean.CataRight;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by lenovo on 2018/11/10.
*/
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.Holder> {
private MyAdapter.OnChildClickListener listener;
public void setChildClickListener(MyAdapter.OnChildClickListener listener){
this.listener = listener;
}
private Context context;
private List<CataRight.DataBean> catalist;
public RightAdapter(Context context, List<CataRight.DataBean> catalist) {
this.context = context;
this.catalist = catalist;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = View.inflate(context, R.layout.sort_right, null);
return new Holder(v);
}
@Override
public void onBindViewHolder(Holder holder, int position) {
List<CataRight.DataBean.ListBean> lists = this.catalist.get(position).getList();
MyAdapter adapter = new MyAdapter(context,lists);
GridLayoutManager layoutManager = new GridLayoutManager(context,5);
holder.sortRvRight.setLayoutManager(layoutManager);
if(listener!=null){
adapter.setChildClickListener(listener);
}
holder.sortRvRight.setAdapter(adapter);
}
@Override
public int getItemCount() {
return catalist.size();
}
class Holder extends RecyclerView.ViewHolder {
@BindView(R.id.sort_rv_right)
RecyclerView sortRvRight;
public Holder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
MyAdapter
package com.example.lenovo.weektwo1109.sort.adapter;
import android.content.Context;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.lenovo.weektwo1109.R;
import com.example.lenovo.weektwo1109.sort.bean.CataRight;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by lenovo on 2018/11/10.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holder> {
//接口回调
public interface OnChildClickListener{
void OnChildClickListener(int posotion,View v);
}
private OnChildClickListener listener;
public void setChildClickListener(OnChildClickListener listener){
this.listener=listener;
}
private Context context;
private List<CataRight.DataBean.ListBean> lists;
public MyAdapter(Context context, List<CataRight.DataBean.ListBean> lists) {
this.context = context;
this.lists = lists;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = View.inflate(context, R.layout.sort_right_child, null);
return new Holder(v);
}
@Override
public void onBindViewHolder(Holder holder, final int position) {
holder.txtName.setText(lists.get(position).getName());
holder.imgLogo.setImageURI(Uri.parse(lists.get(position).getIcon()));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (listener != null){
listener.OnChildClickListener(position,view);
}
}
});
}
@Override
public int getItemCount() {
return lists.size();
}
class Holder extends RecyclerView.ViewHolder {
@BindView(R.id.img_logo)
SimpleDraweeView imgLogo;
@BindView(R.id.txt_name)
TextView txtName;
public Holder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
DetaAdapter
package com.example.lenovo.weektwo1109.sort.adapter;
import android.content.Context;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.lenovo.weektwo1109.R;
import com.example.lenovo.weektwo1109.sort.bean.DetailBean;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by lenovo on 2018/11/11.
*/
public class DetailAdapter extends RecyclerView.Adapter<DetailAdapter.Holder> {
private Context context;
private List<DetailBean.DataBean> list;
public DetailAdapter(Context context, List<DetailBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = View.inflate(context, R.layout.item_detail, null);
return new Holder(v);
}
@Override
public void onBindViewHolder(Holder holder, int position) {
holder.txtTitles.setText(list.get(position).getTitle());
holder.img.setImageURI(Uri.parse(list.get(position).getImages()));
}
@Override
public int getItemCount() {
return list.size();
}
class Holder extends RecyclerView.ViewHolder {
@BindView(R.id.img)
SimpleDraweeView img;
@BindView(R.id.txt_titles)
TextView txtTitles;
public Holder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
DETAactivity
package com.example.lenovo.weektwo1109.sort.view;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.example.lenovo.weektwo1109.R;
import com.example.lenovo.weektwo1109.sort.adapter.DetailAdapter;
import com.example.lenovo.weektwo1109.sort.bean.CataLeft;
import com.example.lenovo.weektwo1109.sort.bean.CataRight;
import com.example.lenovo.weektwo1109.sort.bean.DetailBean;
import com.example.lenovo.weektwo1109.sort.presenter.SortPresenter;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class DetailActivity extends AppCompatActivity implements IView {
@BindView(R.id.rv_detail)
RecyclerView rvDetail;
private SortPresenter presenter;
private List<DetailBean.DataBean> list;
private DetailAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_detail);
ButterKnife.bind(this);
Intent intent = getIntent();
int cid = intent.getIntExtra("cid", 0);
presenter = new SortPresenter();
presenter.attach(this);
presenter.getDetail(cid);
list = new ArrayList<>();
adapter = new DetailAdapter(this,list);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
rvDetail.setLayoutManager(layoutManager);
rvDetail.setAdapter(adapter);
}
@Override
public void getCataLeft(CataLeft cataLeft) {
}
@Override
public void Failed(Throwable t) {
}
@Override
public void getCataRight(CataRight cataRight) {
}
@Override
public void getDetail(List<DetailBean.DataBean> detabeans) {
if (detabeans != null){
list.clear();
list.addAll(detabeans);
adapter.notifyDataSetChanged();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
MVC架构详解与实践
811

被折叠的 条评论
为什么被折叠?



