Android购物车(展示)

Model

   interface CallBackListener{
        void success(int type,String data);
        void fail(int type,String error);
    }
    // 展示购物车
    void doShopCar(int type,String url,CallBackListener listener);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class MainModelIml implements MainModel {
    @Override
    public void doShopCar(final int type, String url, final CallBackListener listener) {
        new OkHttpUtils().get(url).result(new OkHttpUtils.HttpListener() {
            @Override
            public void success(String data) {
                listener.success(type,data);
            }
            @Override
            public void fail(String error) {
               listener.fail(type,error);
            }
        });
    }
}

Presenter

void doShopCar(int type,String url);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
 // 构造
    private MainModel mainModel;
    private MainView mainView;
    public MainPresenterIml(MainModel mainModel, MainView mainView) {
        this.mainModel = mainModel;
        this.mainView = mainView;
    }
    @Override
    public void doShopCar(int type, String url) {
        mainModel.doShopCar(type,url,this);
    }
    @Override
    public void success(int type, String data) {
        mainView.success(type,data);
    }
    @Override
    public void fail(int type, String error) {
        mainView.fail(type,error);
    }
    //销毁,记得页面调用
    public void destory(){
        if (mainModel!=null){
            mainModel=null;
        }
        if (mainView!=null){
            mainView=null;
        }
        System.gc();
    }

Fragment

public class HomeFragment extends Fragment implements MainView {
    private MainPresenterIml mainPresenterIml;
    private RecyclerView mRecycler;
    private TextView mTvTitle,mTvMoney;
    private ShopCarAdapter shopCarAdapter;
    private List<ShopBean.DataBean> datas;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       return inflater.inflate(R.layout.fragment_home,container,false);
    }
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // 寻找控件
        mRecycler = (RecyclerView)view.findViewById(R.id.recycler);
        mTvTitle = (TextView)view.findViewById(R.id.tv_allprice);
        mTvMoney = (TextView)view.findViewById(R.id.tv_money);
        // 设置适配器
        shopCarAdapter=new ShopCarAdapter(getContext());
        // 布局管理器
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecycler.setLayoutManager(linearLayoutManager);
        mRecycler.setAdapter(shopCarAdapter);
        // 获取中介,然后传递接口
        mainPresenterIml=new MainPresenterIml(new MainModelIml(),this);
        mainPresenterIml.doShopCar(0,"http://172.17.8.100/ks/product/getCarts?uid=51");
    }
    // 内存泄漏
    @Override
    public void onDestroy() {
        super.onDestroy();
        mainPresenterIml.destory();
    }
    // 成功
    @Override
    public void success(int type, String data) {
       // 解析接口,获取数据
        ShopBean bean = new Gson().fromJson(data, ShopBean.class);
        datas = bean.getData();
        // 删除第0个,为空
        datas.remove(0);
        // 给适配器传递解析数据
        shopCarAdapter.setList(datas);
    }
    // 失败
    @Override
    public void fail(int type, String error) {
    }
}

商家的适配器

public class ShopCarAdapter extends RecyclerView.Adapter<ShopCarAdapter.ShopCarViewHolder>{

    private Context context;
    private List<ShopBean.DataBean> list=new ArrayList<>();

    public ShopCarAdapter(Context context) {
          this.context = context;
    }
    @NonNull
    @Override
    public ShopCarAdapter.ShopCarViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view=View.inflate(context,R.layout.adapter_item,null);
        ShopCarViewHolder shopCarViewHolder=new ShopCarViewHolder(view);
        return shopCarViewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull ShopCarAdapter.ShopCarViewHolder shopCarViewHolder, int i) {
         // 获取商家名字
        shopCarViewHolder.mTitle.setText(list.get(i).getSellerName());
        // 获取商家下的商品
        List<ShopBean.DataBean.ListBean> listShop=list.get(i).getList();
        ShopCarItemAdapter shopCarItemAdapter = new ShopCarItemAdapter(context, listShop);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
          //一定要记住设置布局管理器
        shopCarViewHolder.mRecycler.setLayoutManager(linearLayoutManager);
        shopCarViewHolder.mRecycler.setAdapter(shopCarItemAdapter);
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    // 传递数据
    public void setList(List<ShopBean.DataBean> list) {
		        this.list=list;
		        // 刷新 很重要
		        notifyDataSetChanged();
    }
    public class ShopCarViewHolder extends RecyclerView.ViewHolder {
	        RecyclerView mRecycler;
	        CheckBox mCheckBox;
	        TextView mTitle;
        public ShopCarViewHolder(@NonNull View itemView) {
            super(itemView);
            mTitle = (TextView) itemView.findViewById(R.id.tv_title);
            mRecycler = (RecyclerView) itemView.findViewById(R.id.recycler);
            mCheckBox = (CheckBox) itemView.findViewById(R.id.checkbox);
        }
    }

商品的适配器

public class ShopCarItemAdapter extends RecyclerView.Adapter<ShopCarItemAdapter.ShopCarItemViewHolder> {
    // 构造
    private Context context;
    private List<ShopBean.DataBean.ListBean> listShop=new ArrayList<>();
    public ShopCarItemAdapter(Context context, List<ShopBean.DataBean.ListBean> listShop) {
        this.context = context;
        this.listShop = listShop;
    }
    @NonNull
    @Override
    public ShopCarItemAdapter.ShopCarItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view=View.inflate(context,R.layout.adapter_item_child,null);
        ShopCarItemViewHolder shopCarItemViewHolder=new ShopCarItemViewHolder(view);
        return shopCarItemViewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull ShopCarItemAdapter.ShopCarItemViewHolder shopCarItemViewHolder, int i) {
        Glide.with(context).load(listShop.get(i).getImages()).into(shopCarItemViewHolder.mImage);
        shopCarItemViewHolder.mTitle.setText(listShop.get(i).getTitle());
        shopCarItemViewHolder.mPrice.setText(listShop.get(i).getPrice() + "");
    }
    @Override
    public int getItemCount() {
        return listShop.size();
    }
    public class ShopCarItemViewHolder extends RecyclerView.ViewHolder {
        ShopCarAddView mShopCarAddView;
        CheckBox mCheckBox;
        TextView mPrice;
        TextView mTitle;
        ImageView mImage;
        public ShopCarItemViewHolder(@NonNull View itemView) {
            super(itemView);
            mImage = (ImageView) itemView.findViewById(R.id.iv_shop);
            mTitle = (TextView) itemView.findViewById(R.id.tv_title);
            mPrice = (TextView) itemView.findViewById(R.id.tv_price);
            mCheckBox=(CheckBox)itemView.findViewById(R.id.checkbox);
            mShopCarAddView=(ShopCarAddView)itemView.findViewById(R.id.shop_car_view);
        }
    }
}

自定义view

public class ShopCarAddView extends RelativeLayout {
    private Context mContext;
    public ShopCarAddView(Context context) {
        super(context);
        init(context);
    }
    public ShopCarAddView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }
    // 初始化
    private void init(Context context) {
        this.mContext=context;
        // 引入布局
        View view=View.inflate(context,R.layout.shop_car_add_view,null);
        addView(view);
    }
}

猜你喜欢

转载自blog.csdn.net/Ye_DaXian/article/details/89046183
今日推荐