接口+Sort

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();

    }
}

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值