单独分类

这个博客介绍了Android应用中使用OkHttp进行网络请求的方法,包括GET和POST两种方式,并实现了自定义拦截器`Comm`来添加额外参数。此外,还涉及到`OnFinishListener`回调接口,用于处理请求的成功与失败。同时,博客提到了图片加载库Universal Image Loader的初始化。内容还涵盖了RecyclerView的适配器`LeftAdapter`和`MyAdapter`的实现,以及数据模型和接口的定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Constans

package com.example.lenovo.myapplication_classify;


/**
 * Created by lenovo on 2018/3/2.
 */


public class Constans {
    public static final String HOST_NAME = "https://www.zhaoapi.cn";


    public static final String LEFT_URL = HOST_NAME + "/product/getCatagory";


    public static final String RIGHT_URL = HOST_NAME + "/product/getProductCatagory";
}

utils包

Comm

.package com.example.lenovo.myapplication_classify.view.utils;


import java.io.IOException;


import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


/**
 * Created by lenovo on 2018/3/2.
 */


public class Comm implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        String method = request.method();


        if ("GET".equals(method)){
            String oldUrl = request.url().toString();
            String newUrl = oldUrl + "&source=android";
            request = new Request.Builder()
                    .url(newUrl)
                    .build();
        }else if ("POST".equals(method)){
            String path = request.url().toString();
            FormBody oldBody = (FormBody) request.body();


            FormBody.Builder body = new FormBody.Builder();


            for (int i = 0 ; i < oldBody.size() ; i++){
                String name = oldBody.name(i);
                String value = oldBody.value(i);
                body.add(name,value);
            }


            body.add("source","android");


            request = new Request.Builder()
                    .post(body.build())
                    .url(path)
                    .build();
        }
        return chain.proceed(request);
    }
}

OkHttpUtils

package com.example.lenovo.myapplication_classify.view.utils;


import android.os.Handler;
import android.util.Log;


import java.io.IOException;
import java.util.Map;


import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;


/**
 * Created by lenovo on 2018/3/2.
 */


public class OkHttpUtils {
    private static OkHttpUtils OK_HTTP_UTILS = null;
    private Handler handler = new Handler();


    private OkHttpUtils() {}


    public static OkHttpUtils getIndata(){
        if (OK_HTTP_UTILS == null){
            synchronized (OkHttpUtils.class){
                if (OK_HTTP_UTILS == null){
                    OK_HTTP_UTILS = new OkHttpUtils();
                }
            }
        }
        return OK_HTTP_UTILS;
    }


    public void doGet(String path, Map<String,String> map, final OnFinishListener onFinishListener){
        StringBuffer sb = new StringBuffer();
        sb.append(path);


        if (sb.indexOf("?") != -1){
            if (sb.indexOf("?") != sb.length()-1 ){
                sb.append("&");
            }
        }else {
            sb.append("?");
        }


        for (Map.Entry<String,String> m : map.entrySet()) {
            sb.append(m.getKey())
                    .append("=")
                    .append(m.getValue())
                    .append("&");
        }


        if (sb.lastIndexOf("&") != -1){
            sb.deleteCharAt(sb.length()-1);
        }


        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new Comm())
                .build();


        Request request = new Request.Builder()
                .get()
                .url(sb.toString())
                .build();


        Call call = okHttpClient.newCall(request);


        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onFinishListener.onFailed(e.getMessage());
                    }
                });
            }


            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                if (response.isSuccessful()){
                    final String result = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onFinishListener.onSuccess(result);
                        }
                    });
                }else {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onFinishListener.onFailed(response.message());
                        }
                    });
                }
            }
        });
    }


    public void doPost(String path, Map<String,String> map, final OnFinishListener onFinishListener){
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new Comm())
                .build();


        FormBody.Builder body = new FormBody.Builder();


        for (String key : map.keySet()) {
            body.add(key,map.get(key));
        }


        Request request = new Request.Builder()
                .post(body.build())
                .url(path)
                .build();


        Call call = okHttpClient.newCall(request);


        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onFinishListener.onFailed(e.getMessage());
                    }
                });
            }


            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                if (response.isSuccessful()){
                    final String result = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onFinishListener.onSuccess(result);
                        }
                    });
                }else {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onFinishListener.onFailed(response.message());
                        }
                    });
                }
            }
        });
    }
}

OnFinishListener

package com.example.lenovo.myapplication_classify.view.utils;


/**
 * Created by lenovo on 2018/1/17.
 */


public interface OnFinishListener {
    void onFailed(String str);


    void onSuccess(Object obj);

}


myapp包 ImageLoader

MyApp

package com.example.lenovo.myapplication_classify.view.myapp;


import android.app.Application;


import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;


/**
 * Created by lenovo on 2018/3/2.
 */


public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration loaderConfiguration = ImageLoaderConfiguration.createDefault(this);
        ImageLoader.getInstance().init(loaderConfiguration);
    }

}

bean包

LeftSuperClass

package com.example.lenovo.myapplication_classify.view.bean;


import java.util.List;


/**
 * Created by lenovo on 2018/3/2.
 */


public class LeftSuperClass {


    /**
     * msg :
     * code : 0
     * data : [{"cid":1,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/shop.png","ishome":1,"name":"京东超市"},{"cid":2,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/qqg.png","ishome":1,"name":"全球购"},{"cid":3,"createtime":"2017-10-10T19:45:11","icon":"http://120.27.23.105/images/category/phone.png","ishome":1,"name":"手机数码"},{"cid":5,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/man.png","ishome":1,"name":"男装"},{"cid":6,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girl.png","ishome":1,"name":"女装"},{"cid":7,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/manshoe.png","ishome":1,"name":"男鞋"},{"cid":8,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girlshoe.png","ishome":1,"name":"女鞋"},{"cid":9,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/shirt.png","ishome":1,"name":"内衣配饰"},{"cid":10,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/bag.png","ishome":1,"name":"箱包手袋"},{"cid":11,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/beauty.png","ishome":1,"name":"美妆个护"},{"cid":12,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/jewel.png","ishome":1,"name":"钟表珠宝"},{"cid":13,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/luxury.png","ishome":1,"name":"奢侈品"},{"cid":14,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/computer.png","ishome":1,"name":"电脑办公"},{"cid":15,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"家用电器"},{"cid":16,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"食品生鲜"},{"cid":17,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"酒水饮料"},{"cid":18,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"母婴童装"},{"cid":19,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"玩具乐器"},{"cid":20,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"医药保健"}]
     */


    private String msg;
    private String code;
    private List<DataBean> data;


    public String getMsg() {
        return msg;
    }


    public void setMsg(String msg) {
        this.msg = msg;
    }


    public String getCode() {
        return code;
    }


    public void setCode(String code) {
        this.code = code;
    }


    public List<DataBean> getData() {
        return data;
    }


    public void setData(List<DataBean> data) {
        this.data = data;
    }


    public static class DataBean {
        /**
         * cid : 1
         * createtime : 2017-10-10T19:41:39
         * icon : http://120.27.23.105/images/category/shop.png
         * ishome : 1
         * name : 京东超市
         */


        private int cid;
        private String createtime;
        private String icon;
        private int ishome;
        private String name;


        public int getCid() {
            return cid;
        }


        public void setCid(int cid) {
            this.cid = cid;
        }


        public String getCreatetime() {
            return createtime;
        }


        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }


        public String getIcon() {
            return icon;
        }


        public void setIcon(String icon) {
            this.icon = icon;
        }


        public int getIshome() {
            return ishome;
        }


        public void setIshome(int ishome) {
            this.ishome = ishome;
        }


        public String getName() {
            return name;
        }


        public void setName(String name) {
            this.name = name;
        }
    }

}

RightSuperClass

package com.example.lenovo.myapplication_classify.view.bean;


import java.util.List;


/**
 * Created by lenovo on 2018/3/2.
 */


public class RightSuperClass {


    /**
     * msg : 获取子分类成功
     * code : 0
     * data : [{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"耳机/耳麦","pcid":10,"pscid":61},{"icon":"http://120.27.23.105/images/icon.png","name":"音箱/音响","pcid":10,"pscid":62},{"icon":"http://120.27.23.105/images/icon.png","name":"MP3/MP4","pcid":10,"pscid":63},{"icon":"http://120.27.23.105/images/icon.png","name":"便携/无线音箱","pcid":10,"pscid":64},{"icon":"http://120.27.23.105/images/icon.png","name":"麦克风","pcid":10,"pscid":65}],"name":"影音娱乐","pcid":"10"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"游戏手机","pcid":11,"pscid":66},{"icon":"http://120.27.23.105/images/icon.png","name":"拍照手机","pcid":11,"pscid":67},{"icon":"http://120.27.23.105/images/icon.png","name":"大屏手机","pcid":11,"pscid":68},{"icon":"http://120.27.23.105/images/icon.png","name":"老人机","pcid":11,"pscid":69},{"icon":"http://120.27.23.105/images/icon.png","name":"对讲机","pcid":11,"pscid":70}],"name":"手机通讯","pcid":"11"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"蓝牙耳机","pcid":12,"pscid":71},{"icon":"http://120.27.23.105/images/icon.png","name":"移动电源","pcid":12,"pscid":72},{"icon":"http://120.27.23.105/images/icon.png","name":"苹果周边","pcid":12,"pscid":73},{"icon":"http://120.27.23.105/images/icon.png","name":"手机耳机","pcid":12,"pscid":74},{"icon":"http://120.27.23.105/images/icon.png","name":"充电器","pcid":12,"pscid":75},{"icon":"http://120.27.23.105/images/icon.png","name":"数据线","pcid":12,"pscid":76},{"icon":"http://120.27.23.105/images/icon.png","name":"手机电池","pcid":12,"pscid":77},{"icon":"http://120.27.23.105/images/icon.png","name":"保护套","pcid":12,"pscid":78}],"name":"手机配件","pcid":"12"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"单反相机","pcid":13,"pscid":79},{"icon":"http://120.27.23.105/images/icon.png","name":"单电/微单相机","pcid":13,"pscid":80},{"icon":"http://120.27.23.105/images/icon.png","name":"拍立得","pcid":13,"pscid":81},{"icon":"http://120.27.23.105/images/icon.png","name":"数码相机","pcid":13,"pscid":82},{"icon":"http://120.27.23.105/images/icon.png","name":"摄像机","pcid":13,"pscid":83},{"icon":"http://120.27.23.105/images/icon.png","name":"镜头","pcid":13,"pscid":84}],"name":"摄影摄像","pcid":"13"}]
     */


    private String msg;
    private String code;
    private List<DataBean> data;


    public String getMsg() {
        return msg;
    }


    public void setMsg(String msg) {
        this.msg = msg;
    }


    public String getCode() {
        return code;
    }


    public void setCode(String code) {
        this.code = code;
    }


    public List<DataBean> getData() {
        return data;
    }


    public void setData(List<DataBean> data) {
        this.data = data;
    }


    public static class DataBean {
        /**
         * cid : 3
         * list : [{"icon":"http://120.27.23.105/images/icon.png","name":"耳机/耳麦","pcid":10,"pscid":61},{"icon":"http://120.27.23.105/images/icon.png","name":"音箱/音响","pcid":10,"pscid":62},{"icon":"http://120.27.23.105/images/icon.png","name":"MP3/MP4","pcid":10,"pscid":63},{"icon":"http://120.27.23.105/images/icon.png","name":"便携/无线音箱","pcid":10,"pscid":64},{"icon":"http://120.27.23.105/images/icon.png","name":"麦克风","pcid":10,"pscid":65}]
         * name : 影音娱乐
         * pcid : 10
         */


        private String cid;
        private String name;
        private String pcid;
        private List<ListBean> list;


        public String getCid() {
            return cid;
        }


        public void setCid(String cid) {
            this.cid = cid;
        }


        public String getName() {
            return name;
        }


        public void setName(String name) {
            this.name = name;
        }


        public String getPcid() {
            return pcid;
        }


        public void setPcid(String pcid) {
            this.pcid = pcid;
        }


        public List<ListBean> getList() {
            return list;
        }


        public void setList(List<ListBean> list) {
            this.list = list;
        }


        public static class ListBean {
            /**
             * icon : http://120.27.23.105/images/icon.png
             * name : 耳机/耳麦
             * pcid : 10
             * pscid : 61
             */


            private String icon;
            private String name;
            private int pcid;
            private int pscid;


            public String getIcon() {
                return icon;
            }


            public void setIcon(String icon) {
                this.icon = icon;
            }


            public String getName() {
                return name;
            }


            public void setName(String name) {
                this.name = name;
            }


            public int getPcid() {
                return pcid;
            }


            public void setPcid(int pcid) {
                this.pcid = pcid;
            }


            public int getPscid() {
                return pscid;
            }


            public void setPscid(int pscid) {
                this.pscid = pscid;
            }
        }
    }

}

adapter包

LeftAdapter

package com.example.lenovo.myapplication_classify.view.adapter;


import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;


import com.example.lenovo.myapplication_classify.R;
import com.example.lenovo.myapplication_classify.view.bean.LeftSuperClass;


import java.util.List;


/**
 * Created by lenovo on 2018/3/2.
 */


public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.ViewHolder> {
    private List<LeftSuperClass.DataBean> list;
    private Context context;
    private int index = 0;
    private OnItemClickListner onItemClickListner;


    public LeftAdapter(Context context) {
        this.context = context;
    }


    public void setList(List<LeftSuperClass.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }


    public void setOnItemClickListner(OnItemClickListner onItemClickListner) {
        this.onItemClickListner = onItemClickListner;
    }


    @Override
    public LeftAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.text_item, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }


    @Override
    public void onBindViewHolder(LeftAdapter.ViewHolder holder, final int position) {
        if (index == position){
            holder.left_title.setTextColor(Color.RED);
            holder.left_title.setBackgroundColor(Color.parseColor("#eeeeee"));
        }else {
            holder.left_title.setTextColor(Color.BLACK);
            holder.left_title.setBackgroundColor(Color.WHITE);
        }
        holder.left_title.setText(list.get(position).getName());
        holder.left_title.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onItemClickListner.onItemClick(v,list.get(position).getCid());
                index = position;
                notifyDataSetChanged();
            }
        });
    }


    @Override
    public int getItemCount() {
        return list != null ? list.size() : 0;
    }


    class ViewHolder extends RecyclerView.ViewHolder{


        private TextView left_title;


        public ViewHolder(View itemView) {
            super(itemView);
            left_title = itemView.findViewById(R.id.left_title);
        }
    }


    public interface OnItemClickListner{
        void onItemClick(View view, int cid);
    }
}

MyAdapter

package com.example.lenovo.myapplication_classify.view.adapter;


import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;


import com.example.lenovo.myapplication_classify.R;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;
import com.nostra13.universalimageloader.core.ImageLoader;


import java.util.List;


/**
 * Created by lenovo on 2018/3/2.
 */


public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<RightSuperClass.DataBean.ListBean> list;
    private Context context;


    public MyAdapter(Context context) {
        this.context = context;
    }


    public void setList(List<RightSuperClass.DataBean.ListBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }


    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }


    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        holder.textView.setText(list.get(position).getName());
        ImageLoader.getInstance().displayImage(list.get(position).getIcon(),holder.img);
    }


    @Override
    public int getItemCount() {
        return list != null ? list.size() : 0;
    }


    class ViewHolder extends RecyclerView.ViewHolder{


        public TextView textView;
        public ImageView img;


        public ViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.mytitle);
            img = itemView.findViewById(R.id.myimg);
        }
    }

}


RightAdapter

package com.example.lenovo.myapplication_classify.view.adapter;




import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


import com.example.lenovo.myapplication_classify.R;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;


import java.util.List;


/**
 * Created by lenovo on 2018/3/2.
 */


public class RightAdapter extends RecyclerView.Adapter<RightAdapter.ViewHolder> {
    private List<RightSuperClass.DataBean> list;
    private Context context;
    private MyAdapter adapter;


    public RightAdapter(Context context) {
        this.context = context;
    }


    public void setList(List<RightSuperClass.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }


    @Override
    public RightAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.group_item, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }


    @Override
    public void onBindViewHolder(RightAdapter.ViewHolder holder, int position) {


        holder.textView.setText(list.get(position).getName());
        Log.i("TAG",list.get(position).getName()+"-----------------------");
//        List<RightSuperClass.DataBean.ListBean> list = this.list.get(position).getList();
        holder.recyclerView.setLayoutManager(new GridLayoutManager(context,3));
        adapter = new MyAdapter(context);
        adapter.setList(list.get(position).getList());
        holder.recyclerView.setAdapter(adapter);
    }






    @Override
    public int getItemCount() {
        return list != null ? list.size() : 0;
    }


    class ViewHolder extends RecyclerView.ViewHolder{


        public TextView textView;
        public RecyclerView recyclerView;


        public ViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.item_title);
            recyclerView = itemView.findViewById(R.id.item_list);
        }
    }
}

activity包

IMainActivity

package com.example.lenovo.myapplication_classify.view.activity;


import com.example.lenovo.myapplication_classify.view.bean.LeftSuperClass;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;


import java.util.List;


/**
 * Created by lenovo on 2018/3/2.
 */


public interface IMainActivity {
    void onFailed(String str);


    void onLeftSuccess(List<LeftSuperClass.DataBean> list);


    void onRightSuccess(List<RightSuperClass.DataBean> list);

}


MainActivity

package com.example.lenovo.myapplication_classify.view.activity;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Toast;


import com.example.lenovo.myapplication_classify.Constans;
import com.example.lenovo.myapplication_classify.R;
import com.example.lenovo.myapplication_classify.presenter.ITotalPresenter;
import com.example.lenovo.myapplication_classify.presenter.TotalPresenter;
import com.example.lenovo.myapplication_classify.view.adapter.LeftAdapter;
import com.example.lenovo.myapplication_classify.view.adapter.RightAdapter;
import com.example.lenovo.myapplication_classify.view.bean.LeftSuperClass;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;


import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class MainActivity extends AppCompatActivity implements IMainActivity {


    private ITotalPresenter iTotalPresenter;
    private RecyclerView leftRecycle;
    private RecyclerView rightRecycle;
    private Map<String, String> leftMap;
    private Map<String, String> rightMap;
    private LeftAdapter leftAdapter;
    private List<LeftSuperClass.DataBean> data;
    private RightAdapter rightAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(R.layout.activity_main);
        initView();




        iTotalPresenter.left(Constans.LEFT_URL, leftMap);


        leftRecycle.setLayoutManager(new LinearLayoutManager(this));
        leftRecycle.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));


        leftRecycle.setAdapter(leftAdapter);


        leftAdapter.setOnItemClickListner(new LeftAdapter.OnItemClickListner() {
            @Override
            public void onItemClick(View view, int cid) {
//                rightMap.clear();
                rightMap.put("cid",cid + "");
                iTotalPresenter.right(Constans.RIGHT_URL,rightMap);
            }
        });


        rightRecycle.setLayoutManager(new LinearLayoutManager(this));
        rightRecycle.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));


        rightRecycle.setAdapter(rightAdapter);
    }


    @Override
    public void onFailed(String str) {
        Toast.makeText(this, str, Toast.LENGTH_LONG).show();
    }


    @Override
    public void onLeftSuccess(List<LeftSuperClass.DataBean> list) {
//        Toast.makeText(this, "--" + list.size(), Toast.LENGTH_LONG).show();
        this.data = list;
        leftAdapter.setList(data);
        //右侧默认展示数据
        rightMap.put("cid",data.get(0).getCid() + "");
        iTotalPresenter.right(Constans.RIGHT_URL,rightMap);
    }


    @Override
    public void onRightSuccess(List<RightSuperClass.DataBean> list) {
//        Toast.makeText(this, "--" + list.size(), Toast.LENGTH_LONG).show();
        rightAdapter.setList(list);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        iTotalPresenter.onDestory();
    }


    private void initView() {
        leftRecycle = (RecyclerView) findViewById(R.id.left_recycle);
        rightRecycle = (RecyclerView) findViewById(R.id.right_recycle);
        iTotalPresenter = new TotalPresenter(this);
        leftAdapter = new LeftAdapter(this);
        rightAdapter = new RightAdapter(this);
        leftMap = new HashMap<>();
        rightMap = new HashMap<>();
    }

}

presenter包

ITotalPresenter

package com.example.lenovo.myapplication_classify.presenter;


import com.example.lenovo.myapplication_classify.view.bean.LeftSuperClass;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;


import java.util.List;
import java.util.Map;


/**
 * Created by lenovo on 2018/3/2.
 */


public interface ITotalPresenter {
    void left(String path, Map<String,String> map);


    void right(String path, Map<String,String> map);


    void onFailed(String str);


    void onLeftSuccess(List<LeftSuperClass.DataBean> list);


    void onRightSuccess(List<RightSuperClass.DataBean> list);


    void onDestory();

}


TotalPresenter

package com.example.lenovo.myapplication_classify.presenter;


import com.example.lenovo.myapplication_classify.modle.ITotalModle;
import com.example.lenovo.myapplication_classify.modle.TotalModle;
import com.example.lenovo.myapplication_classify.view.activity.IMainActivity;
import com.example.lenovo.myapplication_classify.view.bean.LeftSuperClass;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;


import java.util.List;
import java.util.Map;


/**
 * Created by lenovo on 2018/3/2.
 */


public class TotalPresenter implements ITotalPresenter {
    private IMainActivity iMainActivity;
    private ITotalModle iTotalModle;


    public TotalPresenter(IMainActivity iMainActivity) {
        this.iMainActivity = iMainActivity;
        iTotalModle = new TotalModle();
    }


    @Override
    public void left(String path, Map<String, String> map) {
        iTotalModle.left(path,map,this);
    }


    @Override
    public void right(String path, Map<String, String> map) {
        iTotalModle.right(path,map,this);
    }


    @Override
    public void onFailed(String str) {
        if (iMainActivity != null){
            iMainActivity.onFailed(str);
        }
    }


    @Override
    public void onLeftSuccess(List<LeftSuperClass.DataBean> list) {
        if (iMainActivity != null){
            iMainActivity.onLeftSuccess(list);
        }
    }


    @Override
    public void onRightSuccess(List<RightSuperClass.DataBean> list) {
        if (iMainActivity != null){
            iMainActivity.onRightSuccess(list);
        }
    }


    @Override
    public void onDestory() {
        if (iMainActivity != null){
            iMainActivity = null;
        }
    }

}

modle包

ITotalModle

package com.example.lenovo.myapplication_classify.modle;


import com.example.lenovo.myapplication_classify.presenter.ITotalPresenter;


import java.util.Map;


/**
 * Created by lenovo on 2018/3/2.
 */


public interface ITotalModle {
    void left(String path, Map<String,String> map , ITotalPresenter iTotalPresenter);


    void right(String path, Map<String,String> map , ITotalPresenter iTotalPresenter);

}

TotalModle

package com.example.lenovo.myapplication_classify.modle;


import com.example.lenovo.myapplication_classify.presenter.ITotalPresenter;
import com.example.lenovo.myapplication_classify.view.bean.LeftSuperClass;
import com.example.lenovo.myapplication_classify.view.bean.RightSuperClass;
import com.example.lenovo.myapplication_classify.view.utils.OkHttpUtils;
import com.example.lenovo.myapplication_classify.view.utils.OnFinishListener;
import com.google.gson.Gson;


import java.util.List;
import java.util.Map;


/**
 * Created by lenovo on 2018/3/2.
 */


public class TotalModle implements ITotalModle {


    private OkHttpUtils okHttpUtils;


    @Override
    public void left(String path, Map<String, String> map, final ITotalPresenter iTotalPresenter) {
        okHttpUtils = OkHttpUtils.getIndata();
        okHttpUtils.doGet(path, map, new OnFinishListener() {
            @Override
            public void onFailed(String str) {
                iTotalPresenter.onFailed(str);
            }


            @Override
            public void onSuccess(Object obj) {
                Gson gson = new Gson();
                LeftSuperClass leftSuperClass = gson.fromJson(obj.toString(), LeftSuperClass.class);
                iTotalPresenter.onLeftSuccess(leftSuperClass.getData());
            }
        });
    }


    @Override
    public void right(String path, Map<String, String> map, final ITotalPresenter iTotalPresenter) {
        okHttpUtils = OkHttpUtils.getIndata();
        okHttpUtils.doGet(path, map, new OnFinishListener() {
            @Override
            public void onFailed(String str) {
                iTotalPresenter.onFailed(str);
            }


            @Override
            public void onSuccess(Object obj) {
                Gson gson = new Gson();
                RightSuperClass rightSuperClass = gson.fromJson(obj.toString(), RightSuperClass.class);
                iTotalPresenter.onRightSuccess(rightSuperClass.getData());
            }
        });
    }

}

布局文件详情见工具包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值