电商小项目

首页fragment.xml

<?xml version="1.0" encoding="utf-8"?>





<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:id="@+id/xrec"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"></com.jcodecraeer.xrecyclerview.XRecyclerView>
首页json解析 package com.example.gwc.entity;

import java.util.List;

public class Home {
public String code;
public String msg;
public DataBase data;

public static class DataBase{

    public List<BannerBase>banner;
    public List<FenleiBase>fenlei;
    public Miaosha miaosha;
    public Tuijian tuijian;

    public class BannerBase{
        public String icon;
    }
    public class FenleiBase{
        public String icon;
        public String name;
    }
    public class Miaosha{
        public List<ListBase>list;
        public String name;
        public class ListBase{
            public String images;
            public double price;
        }
    }
    public class Tuijian{
        public List<ListBase>list;
        public String name;
        public class ListBase{
            public String title;
            public double price;
            public String images;
        }
    }

}

}
首页adapter
package com.example.gwc.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.GridLayoutManager;
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 android.widget.TextView;

import com.example.gwc.R;
import com.example.gwc.entity.Home;
import com.recker.flybanner.FlyBanner;

import java.lang.reflect.Array;
import java.util.ArrayList;

public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private Context context;
private Home.DataBase dataBase;
private static final int BANNER=0;
public static final int FENLEI=1;
public static final int MIAOSHA=2;
public static final int TUIJIAN=3;

public HomeAdapter(Context context) {
    this.context = context;
    this.dataBase = new Home.DataBase();
}

public void setDataBase(Home.DataBase dataBase) {
    if (dataBase!=null){
        this.dataBase = dataBase;
    }
    notifyDataSetChanged();
}

@Override
public int getItemViewType(int position) {
    if (position==0){
        return BANNER;
    }else if (position==1){
        return FENLEI;
    }else if (position==2){
        return MIAOSHA;
    }else{
        return TUIJIAN;
    }
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    if (getItemViewType(i)==BANNER){
        View view=LayoutInflater.from(context).inflate(R.layout.home_banner,viewGroup,false);
        ViewHolder1 viewHolder1=new ViewHolder1(view);
        return viewHolder1;
    }else if (getItemViewType(i)==FENLEI){
        View view=LayoutInflater.from(context).inflate(R.layout.home_gongnzhu,viewGroup,false);
        ViewHolder2 viewHolder2=new ViewHolder2(view);
        return viewHolder2;
    }else if (getItemViewType(i)==MIAOSHA){
        View view=LayoutInflater.from(context).inflate(R.layout.home_haohuozhu,viewGroup,false);
        ViewHolder3 viewHolder3=new ViewHolder3(view);
        return viewHolder3;
    }else {
        View view=LayoutInflater.from(context).inflate(R.layout.home_tuijianzhu,viewGroup,false);
        ViewHolder4 viewHolder4=new ViewHolder4(view);
        return viewHolder4;
    }
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
    if (dataBase.banner!=null&&dataBase.fenlei!=null&&dataBase.miaosha!=null&&dataBase.tuijian!=null){
        if (viewHolder instanceof ViewHolder1){
            ArrayList<String> list = new ArrayList<>();
            for (int j=0;j<dataBase.banner.size();j++){
                list.add(dataBase.banner.get(j).icon);
            }
            ((ViewHolder1)viewHolder).banner.setImagesUrl(list);
        }else if (viewHolder instanceof ViewHolder2){
            ((ViewHolder2)viewHolder).rec.setLayoutManager(new GridLayoutManager(context,2,LinearLayoutManager.HORIZONTAL,false));

            ((ViewHolder2)viewHolder).rec.setAdapter(new HomeAdapter_gongn(context,dataBase.fenlei));

        }else if (viewHolder instanceof ViewHolder3){
            ((ViewHolder3)viewHolder).title.setText(dataBase.miaosha.name);
            ((ViewHolder3)viewHolder).rec.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
            ((ViewHolder3)viewHolder).rec.setAdapter(new HomeAdapter_haohuo(context,dataBase.miaosha.list));
        }else {
            ((ViewHolder4)viewHolder).rec.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
            ((ViewHolder4)viewHolder).rec.setAdapter(new HomeAdapter_tianjia(context,dataBase.tuijian.list));
        }
    }
}

@Override
public int getItemCount() {
    return 4;
}

public class ViewHolder1 extends RecyclerView.ViewHolder{
    private FlyBanner banner;
    public ViewHolder1(@NonNull View itemView) {
        super(itemView);
        this.banner=itemView.findViewById(R.id.banner);
    }
}
public class ViewHolder2 extends RecyclerView.ViewHolder{
    private RecyclerView rec;
    public ViewHolder2(@NonNull View itemView) {
        super(itemView);
        this.rec=itemView.findViewById(R.id.rec);
    }
}
public class ViewHolder3 extends RecyclerView.ViewHolder{
    private TextView title;
    private RecyclerView rec;
    public ViewHolder3(@NonNull View itemView) {
        super(itemView);
        this.title=itemView.findViewById(R.id.title);
        this.rec=itemView.findViewById(R.id.rec);
    }
}
public class ViewHolder4 extends RecyclerView.ViewHolder{
    private RecyclerView rec;
    public ViewHolder4(@NonNull View itemView) {
        super(itemView);
        this.rec=itemView.findViewById(R.id.rec);
    }
}

}
Basefragment
package com.example.zhoermoni.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(getLayoutId(),container,false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initView(view);
}

protected abstract int getLayoutId();

protected abstract void initView(View view);

protected abstract void initData();

}

分类(尽量调用一个新的接口)xml
分类RequestCallback
package com.example.zhoermoni.net;

import com.example.zhoermoni.entily.Product;
import com.example.zhoermoni.entily.User;

public interface RequestCallback {
void onFailUre(String msg);
void onSuccessUser(User user);
void onSuccessProduct(Product product);
void onSuccessMsg(String msg);
}
分类OkhttpCallback一样
分类契约类
package com.example.zhoermoni.contract;

import com.example.zhoermoni.entily.Product;
import com.example.zhoermoni.entily.User;
import com.example.zhoermoni.net.RequestCallback;

import java.util.HashMap;

public interface IShowCallback {
public abstract class IShowPresenter{
public abstract void user();
public abstract void product(HashMap<String,String>params);
}
interface IShowModel{
void user(RequestCallback callback);
void product(HashMap<String,String>params,RequestCallback callback);
}
interface IShowView{
void onFailUre(String msg);
void onSuccessUser(User user);
void onSuccessProduct(Product product);
void onSuccessMsg(String msg);
}
}
分类在model层解析
package com.example.zhoermoni.model;

import android.os.Handler;
import android.text.TextUtils;

import com.example.zhoermoni.api.UserApi;
import com.example.zhoermoni.contract.IShowCallback;
import com.example.zhoermoni.entily.Product;
import com.example.zhoermoni.entily.User;
import com.example.zhoermoni.net.OkhttpCallback;
import com.example.zhoermoni.net.RequestCallback;
import com.example.zhoermoni.utiles.OkHttpUtiley;
import com.google.gson.Gson;

import java.util.HashMap;

public class UserModel implements IShowCallback.IShowModel {
private Handler handler=new Handler();
@Override
public void user(final RequestCallback callback) {
OkHttpUtiley.getmInstance().doPost(UserApi.PRODUCT_LEFT, null, new OkhttpCallback() {
@Override
public void onFailUre(String msg) {
if (callback!=null){
handler.post(new Runnable() {
@Override
public void run() {
callback.onFailUre(“网络有误,请稍后再试”);
}
});
}
}

        @Override
        public void onSuccess(String result) {
            final User user = new Gson().fromJson(result, User.class);
            if (!TextUtils.isEmpty(result)){
                if (callback!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callback.onSuccessUser(user);
                        }
                    });
                }
            }
        }
    });
}

@Override
public void product(HashMap<String, String> params, final RequestCallback callback) {
    OkHttpUtiley.getmInstance().doPost(UserApi.PRODUCE_RIGHT, params, new OkhttpCallback() {
        @Override
        public void onFailUre(String msg) {
            if (callback!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onFailUre("网络异常");
                    }
                });
            }
        }

        @Override
        public void onSuccess(String result) {
            final Product product = new Gson().fromJson(result, Product.class);
            if (!TextUtils.isEmpty(result)){
                if (callback!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callback.onSuccessProduct(product);
                        }
                    });
                }
            }
        }
    });
}

}
分类json解析
侧面
package com.example.zhoermoni.entily;

import java.util.List;

public class User {
private String msg;
private String code;
private List 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 {

    private int cid;
    private String name;

    public int getCid() {
        return cid;
    }

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

    public String getName() {
        return name;
    }

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

}
分类主页面
package com.example.zhoermoni.entily;

import java.util.List;

public class Product {
private String msg;
private String code;
private List 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 class DataBean {
    private String name;
    private String pcid;
    private List<ListBean> list;

    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 class ListBean {

        private String icon;
        private String name;

        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;
        }
    }
}

}
分类适配器
侧面
package com.example.dierzzk190107jjt.adapter;

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

import com.example.dierzzk190107jjt.R;
import com.example.dierzzk190107jjt.entity.User;

import java.util.List;

public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
private Context context;
private List<User.Data>list;

public UserAdapter(Context context, List<User.Data> list) {
    this.context = context;
    this.list = list;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.cemian,viewGroup,false);
    ViewHolder viewHolder=new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
    final User.Data data = list.get(i);
    viewHolder.title.setText(data.getName());
    viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (itemClickListener!=null){
                itemClickListener.click(data.getCid()+"");
            }
        }
    });
}


@Override
public int getItemCount() {
    return list==null?0:list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
    private TextView title;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
            title=itemView.findViewById(R.id.title);
    }
}
private ItemClickListener itemClickListener;
public void setItemClickListenert(ItemClickListener itemClickListenert){
    this.itemClickListener=itemClickListenert;
}
public interface ItemClickListener{
    void click(String cid);
}

}
分类主页面主适配器
package com.example.dierzzk190107jjt.adapter;

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

import com.example.dierzzk190107jjt.R;
import com.example.dierzzk190107jjt.entity.Prodocf;

import java.util.List;

public class ProdocfAdapter extends RecyclerView.Adapter<ProdocfAdapter.ViewHolder>{
private Context context;
private List<Prodocf.Data> list;

public ProdocfAdapter(Context context, List<Prodocf.Data> list) {
    this.context = context;
    this.list = list;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.zhu,viewGroup,false);
    ViewHolder viewHolder=new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
    Prodocf.Data data = list.get(i);
    viewHolder.title.setText(data.getName());
    List<Prodocf.Data.ListBean> list = data.getList();
    viewHolder.rec.setLayoutManager(new GridLayoutManager(context,3));
    viewHolder.rec.setAdapter(new ZuiAdapter(context, list));
}

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

public class ViewHolder extends RecyclerView.ViewHolder{
    private TextView title;
    private RecyclerView rec;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        title=itemView.findViewById(R.id.title);
        rec=itemView.findViewById(R.id.rec);
    }
}

}
子适配器
package com.example.dierzzk190107jjt.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
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.bumptech.glide.Glide;
import com.example.dierzzk190107jjt.R;
import com.example.dierzzk190107jjt.entity.Prodocf;

import java.util.List;

public class ZuiAdapter extends RecyclerView.Adapter<ZuiAdapter.VIewHolder1> {
private Context context;
private List<Prodocf.Data.ListBean>list;
public ZuiAdapter(Context context, List<Prodocf.Data.ListBean> list) {
this.context=context;
this.list=list;
}

@NonNull
@Override
public VIewHolder1 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.zuiho,viewGroup,false);
    VIewHolder1 vIewHolder1=new VIewHolder1(view);
    return vIewHolder1;
}

@Override
public void onBindViewHolder(@NonNull VIewHolder1 vIewHolder, int i) {
    Prodocf.Data.ListBean listBean = list.get(i);
    Glide.with(context).load(listBean.getIcon()).into(vIewHolder.img);
    vIewHolder.title.setText(listBean.getName());
}

@Override
public int getItemCount() {
    return list.size();
}
public class VIewHolder1 extends RecyclerView.ViewHolder{
    private ImageView img;
    private TextView title;
    public VIewHolder1(@NonNull View itemView) {
        super(itemView);
        title=itemView.findViewById(R.id.title);
        img=itemView.findViewById(R.id.img);
    }
}

}
分页Activity
package com.example.dierzzk190107jjt.fragment;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.example.dierzzk190107jjt.R;
import com.example.dierzzk190107jjt.adapter.ProdocfAdapter;
import com.example.dierzzk190107jjt.adapter.UserAdapter;
import com.example.dierzzk190107jjt.contract.IShowCallback;
import com.example.dierzzk190107jjt.entity.Prodocf;
import com.example.dierzzk190107jjt.entity.User;
import com.example.dierzzk190107jjt.net.OkHttpUtily;
import com.example.dierzzk190107jjt.presenter.UserPresenter;

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

public class FragmentTwo extends BaseFragment implements IShowCallback.IShowView {

private RecyclerView cemian;
private UserAdapter userAdapter;
private UserPresenter presenter;
private String cid="1";
private RecyclerView zhu;
private ProdocfAdapter prodocfAdapter;

@Override
protected int getLayout() {
    return R.layout.fragmenttwo;
}
@Override
protected void initView(View view) {
    cemian = view.findViewById(R.id.cemian);
    zhu = view.findViewById(R.id.zhu);
    presenter = new UserPresenter(this);
    presenter.user();
    HashMap<String,String> params=new HashMap<>();

    params.put("cid",cid);
    presenter.prodocf(params);
    cemian.setLayoutManager(new LinearLayoutManager(getActivity()));
    zhu.setLayoutManager(new LinearLayoutManager(getActivity()));

}

@Override
protected void initData() {

}


@Override
public void onFailUer(String msg) {

}

@Override
public void onSuccessUser(User user) {
    List<User.Data> data = user.getData();
    userAdapter=new UserAdapter(getActivity(),data);
    cemian.setAdapter(userAdapter);
    userAdapter.setItemClickListenert(new UserAdapter.ItemClickListener() {
        @Override
        public void click(String cid) {
            HashMap<String,String> params=new HashMap<>();
            params.put("cid",cid);
            presenter.prodocf(params);
        }
    });
}

@Override
public void onSuccessProdocf(Prodocf prodocf) {
    List<Prodocf.Data> data1 = prodocf.getData();
    prodocfAdapter = new ProdocfAdapter(getActivity(), data1);
    zhu.setAdapter(prodocfAdapter);
}

@Override
public void onSuccessMsg(String msg) {

}

@Override
public void onDestroy() {
    super.onDestroy();
    OkHttpUtily.getmInstaser().okhttpcsas();
    presenter.dester();
}

}
购物车搜索xml

<?xml version="1.0" encoding="utf-8"?>






<com.jcodecraeer.xrecyclerview.XRecyclerView
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:id="@+id/xr"></com.jcodecraeer.xrecyclerview.XRecyclerView>

搜索的OKHTTP
package com.example.gwc.net;

import android.os.Handler;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

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

public class OkHttpUtiles {
private Handler handler=new Handler();
private OkHttpClient okHttpClient;
private static OkHttpUtiles mIncvcnmxz;
public OkHttpUtiles(){
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient=new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.readTimeout(5,TimeUnit.SECONDS)
.writeTimeout(5,TimeUnit.SECONDS)
.connectTimeout(5,TimeUnit.SECONDS)
.build();
}
public void doPost(String auiUre, HashMap<String,String>params, final OkHttpCallback okHttpCallback){
FormBody.Builder formBody = new FormBody.Builder();
if (params!=null){
for (Map.Entry<String,String>p:params.entrySet()){
formBody.add(p.getKey(),p.getValue());
}
}
final Request request = new Request.Builder().url(auiUre).post(formBody.build()).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (okHttpCallback!=null){
handler.post(new Runnable() {
@Override
public void run() {
okHttpCallback.onFaliUre(“网络异常”);
}
});
}
}

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String result = response.body().string();
            int code = response.code();
            if (200==code){
                if (okHttpCallback!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            okHttpCallback.onSuccess(result);
                        }
                    });
                }
            }
        }
    });
}
public static OkHttpUtiles getmIncvcnmxz(){
    if (mIncvcnmxz==null){
        synchronized (OkHttpUtiles.class){
            if (mIncvcnmxz==null){
                mIncvcnmxz=new OkHttpUtiles();
            }
        }
    }
    return mIncvcnmxz;
}
public void gczvbxczx(){
    if (okHttpClient!=null){
        okHttpClient.dispatcher().cancelAll();
    }
}

}
搜索的Model
package com.example.gwc.model;

import android.text.TextUtils;

import com.example.gwc.api.UserApi;
import com.example.gwc.contract.IShowContract;
import com.example.gwc.net.OkHttpCallback;
import com.example.gwc.net.OkHttpUtiles;
import com.example.gwc.net.RequestCallback;

import java.util.HashMap;

public class IShowModel implements IShowContract.IShowModel {
@Override
public void ShowModel(HashMap<String, String> params, final RequestCallback callback) {
OkHttpUtiles.getmIncvcnmxz().doPost(UserApi.USER_SHOW, params, new OkHttpCallback() {
@Override
public void onFaliUre(String msg) {
if(callback!=null){
callback.onFaliUre(msg);
}
}

        @Override
        public void onSuccess(String result) {
           if (!TextUtils.isEmpty(result)){
               if (callback!=null){
                    callback.onSuccess(result);
               }
           }
        }
    });
}

@Override
public void SosuoModel(HashMap<String, String> params, final RequestCallback callback) {
    OkHttpUtiles.getmIncvcnmxz().doPost(UserApi.USER_USER, params, new OkHttpCallback() {
        @Override
        public void onFaliUre(String msg) {
            if(callback!=null){
                callback.onFaliUre(msg);
            }
        }

        @Override
        public void onSuccess(String result) {
            if (!TextUtils.isEmpty(result)){
                if (callback!=null){
                    callback.onSuccess(result);
                }
            }
        }
    });
}

@Override
public void AddModel(HashMap<String, String> params, final RequestCallback callback) {
    OkHttpUtiles.getmIncvcnmxz().doPost(UserApi.USER_ADDSHOP, params, new OkHttpCallback() {
        @Override
        public void onFaliUre(String msg) {
            if(callback!=null){
                callback.onFaliUre(msg);
            }
        }

        @Override
        public void onSuccess(String result) {
            if (!TextUtils.isEmpty(result)){
                if (callback!=null){
                    callback.onSuccess(result);
                }
            }
        }
    });
}

}
搜索preserve
package com.example.gwc.preserve;

import com.example.gwc.contract.IShowContract;
import com.example.gwc.model.IShowModel;
import com.example.gwc.net.RequestCallback;

import java.util.HashMap;

public class IShowPreserve extends IShowContract.IShowPreserve {
private IShowModel iShowModel;
private IShowContract.IShowView iShowView;

public IShowPreserve( IShowContract.IShowView iShowView) {
    this.iShowModel = new IShowModel();
    this.iShowView = iShowView;
}

@Override
public void ShowPreserve(HashMap<String, String> params) {
    if (iShowModel!=null){
        iShowModel.ShowModel(params, new RequestCallback() {
            @Override
            public void onFaliUre(String msg) {
                if (iShowView!=null){
                    iShowView.onFaliUre(msg);
                }
            }

            @Override
            public void onSuccess(String result) {
                if (iShowView!=null){
                    iShowView.onSuccess(result);
                }
            }
        });
    }
}

@Override
public void SosuoPreserve(HashMap<String, String> params) {
    if (iShowModel!=null){
        iShowModel.SosuoModel(params, new RequestCallback() {
            @Override
            public void onFaliUre(String msg) {
                if (iShowView!=null){
                    iShowView.onFaliUre(msg);
                }
            }

            @Override
            public void onSuccess(String result) {
                if (iShowView!=null){
                    iShowView.onSuccess(result);
                }
            }
        });
    }
}

@Override
public void AddPreserve(HashMap<String, String> params) {
    if (iShowModel!=null){
        iShowModel.AddModel(params, new RequestCallback() {
            @Override
            public void onFaliUre(String msg) {
                if (iShowView!=null){
                    iShowView.onFaliUre(msg);
                }
            }

            @Override
            public void onSuccess(String result) {
                if (iShowView!=null){
                    iShowView.onSuccess(result);
                }
            }
        });
    }
}
private void okhttcallback(){
    if (iShowView!=null){
        iShowView=null;
    }
}

}
购物车展示json
package com.example.gwc.entity;

import java.util.List;

public class Sosuo {
public String code;
public String msg;
public List data;
public class DataBase{
public String sellerName;
public String sellerid;
public boolean ischeckBox;
public List list;
public class Product{
public String title;
public String images;
public double price;
public boolean isproductcheckBox;
public String pid;
public int pos;
public int productNum;
}
}
}
搜索的适配器
package com.example.gwc.adapter;

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

import com.bumptech.glide.Glide;
import com.example.gwc.R;
import com.example.gwc.entity.Show;

import java.util.ArrayList;
import java.util.List;

public class ShowAdapter extends RecyclerView.Adapter<ShowAdapter.ViewHolder>{
private Context context;
private List<Show.DataBean> show;

public ShowAdapter(Context context) {
    this.context = context;
    this.show = new ArrayList<>();
}

public void setShow(List<Show.DataBean> show) {
    if (show!=null){
        this.show = show;
    }
    notifyDataSetChanged();
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.sosuo_shuju,viewGroup,false);
    ViewHolder viewHolder=new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
    Show.DataBean dataBean = show.get(i);
    String[] split = dataBean.getImages().split("!");
    Glide.with(context).load(split[0]).into(viewHolder.img);
    viewHolder.title.setText(dataBean.getTitle());
    viewHolder.price.setText("¥:"+dataBean.getPrice());
    viewHolder.gwc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (getpidllback!=null){
                getpidllback.getpid(show.get(i).getPid());
            }
        }
    });
}

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

public class ViewHolder extends RecyclerView.ViewHolder{
    private ImageView img;
    private TextView title,price;
    private Button gwc;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        this.img=itemView.findViewById(R.id.img);
        this.title=itemView.findViewById(R.id.title);
        this.price=itemView.findViewById(R.id.price);
        this.gwc=itemView.findViewById(R.id.gwc);
    }
}
private getpidCllback getpidllback;

public void setGetpidllback(getpidCllback getpidllback) {
    this.getpidllback = getpidllback;
}

public interface getpidCllback{
    void getpid(int pid);
}

}
搜索的fragment
package com.example.gwc.fragment;

import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.gwc.R;
import com.example.gwc.adapter.ShowAdapter;
import com.example.gwc.contract.IShowContract;
import com.example.gwc.entity.AddShop;
import com.example.gwc.entity.Show;
import com.example.gwc.preserve.IShowPreserve;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.HashMap;

public class FragmentSosuo extends BaseFragment implements IShowContract.IShowView {

private EditText name;
private Button sos;
private IShowPreserve iShowPreserve;
private ShowAdapter showAdapter;
private int page=1;
private XRecyclerView xr;

@Override
protected int getfragment() {
    return R.layout.fragmentsosuo;
}

@Override
protected void initView(View view) {
    name = view.findViewById(R.id.name);
    sos = view.findViewById(R.id.sos);
    xr = view.findViewById(R.id.xr);
    xr.setLayoutManager(new LinearLayoutManager(getActivity()));
    iShowPreserve = new IShowPreserve(this);
    showAdapter = new ShowAdapter(getActivity());
    sos.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String title = name.getText().toString();
            HashMap<String,String>params=new HashMap<>();
            params.put("keywords",title);
            params.put("page",page+"");
            iShowPreserve.ShowPreserve(params);
        }
    });
    showAdapter.setGetpidllback(new ShowAdapter.getpidCllback() {
        @Override
        public void getpid(int pid) {
            HashMap<String,String>params=new HashMap<>();
            params.put("uid","601");
            params.put("pid",pid+"");
            iShowPreserve.AddPreserve(params);
        }
    });
    xr.setAdapter(showAdapter);
}

@Override
protected void initData() {

}

@Override
public void onFaliUre(String msg) {
    Toast.makeText(getActivity(),msg,Toast.LENGTH_SHORT).show();
}

@Override
public void onSuccess(String result) {
    Show show = new Gson().fromJson(result, Show.class);
    Toast.makeText(getActivity(),show.getMsg(),Toast.LENGTH_SHORT).show();
    showAdapter.setShow(show.getData());
}

@Override
public void onSuccessAddshow(String result) {
    AddShop addShop = new Gson().fromJson(result, AddShop.class);
    Toast.makeText(getActivity(),addShop.getMsg(),Toast.LENGTH_SHORT).show();
}

}
购物车第一级适配器
package com.example.gwc.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
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 android.widget.CheckBox;
import android.widget.TextView;

import com.example.gwc.R;
import com.example.gwc.entity.Sosuo;
import com.example.gwc.fragmentcallback.BufenCallback;
import com.example.gwc.fragmentcallback.CartUlCallback;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.List;

public class GwcAdapter_Yi extends RecyclerView.Adapter<GwcAdapter_Yi.ViewHolder>implements BufenCallback {
private Context context;
private List<Sosuo.DataBase> show;
private GwcAdapter_Er gwcAdapter_er;
private CartUlCallback cartUlCallback;

public GwcAdapter_Yi(Context context,CartUlCallback cartUlCallback) {
    this.context = context;
    this.show = new ArrayList<>();
    this.cartUlCallback=cartUlCallback;
}

public void setShow(List<Sosuo.DataBase> show) {
    if (show!=null){
        this.show = show;
    }
    notifyDataSetChanged();
}
public void addShow(List<Sosuo.DataBase> show) {
    if (show!=null){
       show.addAll(show);
    }
    notifyDataSetChanged();

}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.gwc_zhuyi,viewGroup,false);
    ViewHolder viewHolder=new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
    double totprice=0;
    for (Sosuo.DataBase.Product product : show.get(i).list) {
        totprice+=product.price*product.productNum;
    }
    for (Sosuo.DataBase.Product product : show.get(i).list) {
        product.pos=i;
    }
    viewHolder.xiao.setText("¥:"+totprice);
    Sosuo.DataBase dataBase = show.get(i);
    viewHolder.name.setText(dataBase.sellerName);
    viewHolder.checkBox.setChecked(show.get(i).ischeckBox);
    if (dataBase.ischeckBox){
        viewHolder.checkBox.setChecked(true);
    }else {
        viewHolder.checkBox.setChecked(false);
    }
    viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            show.get(i).ischeckBox=viewHolder.checkBox.isChecked();
            for (Sosuo.DataBase.Product product : show.get(i).list) {
                product.isproductcheckBox=show.get(i).ischeckBox;
            }
            notifyDataSetChanged();
            if (cartUlCallback!=null){
                cartUlCallback.notifyCall();
            }
        }
    });
    viewHolder.xr.setLayoutManager(new LinearLayoutManager(context));
    gwcAdapter_er = new GwcAdapter_Er(context, show.get(i).list);
    gwcAdapter_er.setBufenCallback(this);
    viewHolder.xr.setAdapter(gwcAdapter_er);
}

@Override
public int getItemCount() {
    return show.size();
}

@Override
public void notifyCartItem(boolean isChecked, int postion) {
    show.get(postion).ischeckBox=isChecked;
    notifyDataSetChanged();
    if (cartUlCallback!=null){
        cartUlCallback.notifyCall();
    }
}

@Override
public void notifyNum() {
    if (cartUlCallback!=null){
        cartUlCallback.notifyCall();
    }
}

public class ViewHolder extends RecyclerView.ViewHolder{
    private TextView name,xiao;
    private CheckBox checkBox;
    private XRecyclerView xr;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        this.checkBox=itemView.findViewById(R.id.checkBox);
        this.name=itemView.findViewById(R.id.name);
        this.xr=itemView.findViewById(R.id.xr);
        this.xiao=itemView.findViewById(R.id.xiao);
    }
}

}

购物车第二级适配器
package com.example.gwc.adapter;

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

import com.bumptech.glide.Glide;
import com.example.gwc.R;
import com.example.gwc.entity.Sosuo;
import com.example.gwc.fragmentcallback.BufenCallback;
import com.example.gwc.view.MyView;

import java.util.List;

public class GwcAdapter_Er extends RecyclerView.Adapter<GwcAdapter_Er.ViewHolder>{
private Context context;
private List<Sosuo.DataBase.Product> list;
private BufenCallback bufenCallback;

public void setBufenCallback(BufenCallback bufenCallback) {
    this.bufenCallback = bufenCallback;
}

public GwcAdapter_Er(Context context, List<Sosuo.DataBase.Product> list) {
    this.context = context;
    this.list = list;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.gwc_er,viewGroup,false);
    ViewHolder viewHolder=new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
    final Sosuo.DataBase.Product product = list.get(i);
    String[] split = product.images.split("!");
    Glide.with(context).load(split[0]).into(viewHolder.img);
    viewHolder.title.setText(product.title);
    viewHolder.myview.setNum(list.get(i).productNum);
    viewHolder.checkBox.setChecked(list.get(i).isproductcheckBox);
    viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            list.get(i).isproductcheckBox=viewHolder.checkBox.isChecked();
            for (Sosuo.DataBase.Product product1 : list) {
                if (!product1.isproductcheckBox){
                    if (bufenCallback!=null){
                        bufenCallback.notifyCartItem(false,product1.pos);
                    }
                    return;
                }
                if (bufenCallback!=null){
                    bufenCallback.notifyCartItem(true,product1.pos);
                }
            }
        }
    });
    viewHolder.price.setText("¥:"+product.price);
    viewHolder.myview.setGetnumcallback(new MyView.getNumcallback() {
        @Override
        public void getnum(int nums) {
            list.get(i).productNum=nums;
            if (bufenCallback!=null){
                bufenCallback.notifyNum();
            }
        }
    });
}

@Override
public int getItemCount() {
    return list.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    private ImageView img;
    private CheckBox checkBox;
    private TextView title,price;
    private MyView myview;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        this.checkBox=itemView.findViewById(R.id.checkBox);
        this.img=itemView.findViewById(R.id.img);
        this.title=itemView.findViewById(R.id.title);
        this.price=itemView.findViewById(R.id.price);
        this.myview=itemView.findViewById(R.id.myviwe);
    }
}

}
购物车activity
package com.example.gwc.fragment;

import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

import com.example.gwc.R;
import com.example.gwc.adapter.GwcAdapter_Yi;
import com.example.gwc.contract.IShowContract;
import com.example.gwc.entity.Sosuo;
import com.example.gwc.fragmentcallback.CartUlCallback;
import com.example.gwc.preserve.IShowPreserve;
import com.google.gson.Gson;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

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

public class FragmentGwc extends BaseFragment implements IShowContract.IShowView,CartUlCallback {

private XRecyclerView xr;
private CheckBox checkBox;
private TextView zong;
private IShowPreserve iShowPreserve;
private GwcAdapter_Yi gwcAdapter_yi;
private List<Sosuo.DataBase> soso;

@Override
protected int getfragment() {
    return R.layout.fragmentgwc;
}

@Override
protected void initView(View view) {
    xr = view.findViewById(R.id.xr);
    xr.setLayoutManager(new LinearLayoutManager(getActivity()));
    xr.setPullRefreshEnabled(true);
    xr.setLoadingMoreEnabled(true);
    xr.setLoadingListener(new XRecyclerView.LoadingListener() {
        @Override
        public void onRefresh() {

            HashMap<String,String>params=new HashMap<>();
            params.put("uid","601");
            iShowPreserve.SosuoPreserve(params);
            xr.refreshComplete();
        }

        @Override
        public void onLoadMore() {

        }
    });
    checkBox = view.findViewById(R.id.checkBox);

    zong = view.findViewById(R.id.zong);
    iShowPreserve = new IShowPreserve(this);
    gwcAdapter_yi = new GwcAdapter_Yi(getActivity(),this);
    HashMap<String,String>params=new HashMap<>();
    params.put("uid","601");
    iShowPreserve.SosuoPreserve(params);
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked){
                for (Sosuo.DataBase dataBase : soso) {
                    dataBase.ischeckBox=true;
                    for (Sosuo.DataBase.Product product : dataBase.list) {
                        product.isproductcheckBox=true;
                    }
                }
            }else {
                for (Sosuo.DataBase dataBase : soso) {
                    dataBase.ischeckBox=false;
                    for (Sosuo.DataBase.Product product : dataBase.list) {
                        product.isproductcheckBox=false;
                    }
                }
            }
            gwcAdapter_yi.notifyDataSetChanged();
            getTotalPrice();
        }
    });
    xr.setAdapter(gwcAdapter_yi);
}

@Override
protected void initData() {

}

@Override
public void onFaliUre(String msg) {

}

@Override
public void onSuccess(String result) {
    Sosuo sosuo = new Gson().fromJson(result, Sosuo.class);
    soso=sosuo.data;
    for (Sosuo.DataBase dataBase : soso) {
        for (Sosuo.DataBase.Product product : dataBase.list) {
            product.productNum=1;
        }
    }
    Toast.makeText(getActivity(),sosuo.msg,Toast.LENGTH_SHORT).show();
    gwcAdapter_yi.setShow(sosuo.data);
}

@Override
public void onSuccessAddshow(String result) {

}
public void getTotalPrice(){
    double totalprice=0;
    for (Sosuo.DataBase dataBase : soso) {
        for (Sosuo.DataBase.Product product : dataBase.list) {
            if (product.isproductcheckBox){
                totalprice+=product.price*product.productNum;
            }
        }
    }
    zong.setText("¥:"+totalprice);
}

@Override
public void notifyCall() {
    getTotalPrice();
}

}
购物车接口
package com.example.gwc.fragmentcallback;

public interface BufenCallback {
选择状态
void notifyCartItem(boolean isChecked,int postion);
一级二级 联动
void notifyNum();
}
package com.example.gwc.fragmentcallback;

public interface CartUlCallback {
总价
void notifyCall();
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值