先写网络封装+工具类
APi
public interface Api {
@GET(“ks/product/getCarts?uid=51”)
Observable getgouwuche();
}
Retrofit
public class Ulit {
public Api api;
private static final Ulit ULIT = new Ulit();
public Ulit() {
}
public static Ulit getdan() {
return ULIT;
}
public void getUlit() {
Retrofit build = new Retrofit.Builder()
.baseUrl("http://172.17.8.100/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
api = build.create(Api.class);
}
}
MVP
interface接口
public interface IManintenter {
void getintenter(GouWuChBean gouWuChBean);
}
Presenter
public class GouWuChePager {
Shou1Fragmenter fragmenter;
private final Ulit getdan;
public GouWuChePager(Shou1Fragmenter fragmenter1) {
this.fragmenter = fragmenter1;
getdan = Ulit.getdan();
}
public void getgouwuchepresenter() {
getdan.getUlit();
getdan.api.getgouwuche().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<GouWuChBean>() {
@Override
public void accept(GouWuChBean gouWuChBean) throws Exception {
fragmenter.getintenter(gouWuChBean);
}
});
}
}
Fresco的工具App .name注册
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
自定义加减器
布局
类
public class JiaJianQi extends LinearLayout {
private Button jia;
private Button jian;
private TextView shuliang;
public JiaJianQi(Context context) {
super(context);
}
public JiaJianQi(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.zidingyilayout, this);
jia = findViewById(R.id.jia);
jian = findViewById(R.id.jian);
shuliang = findViewById(R.id.shuliang);
}
public void setJia(OnClickListener jia1) {
jia.setOnClickListener(jia1);
}
public void setJian(OnClickListener jian1) {
jian.setOnClickListener(jian1);
}
public void setShuliang(String shuliang1) {
shuliang.setText(shuliang1);
}
}
布局
主
<android.support.v7.widget.RecyclerView
android:id="@+id/shangpinRecyclerView"
android:layout_width=“match_parent”
android:layout_weight=“9”
android:layout_height=“0dp”>
</android.support.v7.widget.RecyclerView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<CheckBox
android:paddingRight="20dp"
android:layout_gravity="center"
android:id="@+id/quanxuan"
android:text="全选"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_gravity="center"
android:id="@+id/zongjia"
android:text="总价为:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
父
子
<CheckBox
android:layout_gravity="center"
android:id="@+id/zi"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/ziSimpleDraweeView"
android:layout_width="100dp"
android:layout_height="100dp" />
<LinearLayout
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/ziname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/zijiage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<com.bwie.gwc.view.activity.JiaJianQi
android:id="@+id/jiajianqi"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.bwie.gwc.view.activity.JiaJianQi>
</LinearLayout>
主
package com.bwie.gwc.view.fragmenter;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
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 android.widget.CheckBox;
import android.widget.TextView;
import com.bwie.gwc.R;
import com.bwie.gwc.model.GouWuChBean;
import com.bwie.gwc.presenter.GouWuChePager;
import com.bwie.gwc.view.adapter.ShangPinAdapter;
import com.bwie.gwc.view.intenter.IManintenter;
import com.bwie.gwc.view.intenter.ZongJiaintenter;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
/**
-
@Auther: zh
-
@Date: 2019/4/6 15:11
-
@Description: ?{赵光金}
*/
public class Shou1Fragmenter extends Fragment implements IManintenter, ZongJiaintenter {
@BindView(R.id.quanxuan)
CheckBox quanxuan;
@BindView(R.id.zongjia)
TextView zongjia;
@BindView(R.id.shangpinRecyclerView)
RecyclerView shangpinRecyclerView;
Unbinder unbinder;
private ShangPinAdapter pinAdapter;
private List<GouWuChBean.DataBean> data;
//权限的数组
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.ACCESS_NETWORK_STATE,
//读取内存权限
Manifest.permission.READ_EXTERNAL_STORAGE,
//写入内存权限
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
private static int REQUEST_PERMISSION_CODE = 1;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shou1layout, container, false);
unbinder = ButterKnife.bind(this, view);
if (getUserVisibleHint()) {
GouWuChePager gouWuChePager = new GouWuChePager(this);
gouWuChePager.getgouwuchepresenter();
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
manager.setOrientation(LinearLayoutManager.VERTICAL);
shangpinRecyclerView.setLayoutManager(manager);
pinAdapter = new ShangPinAdapter(getActivity(),this);
shangpinRecyclerView.setAdapter(pinAdapter);
getquanxian();
}
return view;
}
private void getquanxian() {
if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP){
if (ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(getActivity(),PERMISSIONS_STORAGE,REQUEST_PERMISSION_CODE);
}
}
}
@Override
public void getintenter(GouWuChBean gouWuChBean) {
data = gouWuChBean.getData();
pinAdapter.setData(data);
pinAdapter.setQuanxuan(quanxuan);
}@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}@OnClick(R.id.quanxuan)
public void onViewClicked() {
boolean checked = quanxuan.isChecked();
for (int i = 0; i <data.size(); i++) {
data.get(i).setClick(checked);
List<GouWuChBean.DataBean.ListBean> list = data.get(i).getList();
for (int j = 0; j <list.size() ; j++) {
list.get(j).setClick(checked);
}
}
getzongjia();
pinAdapter.notifyDataSetChanged();
}private void getzongjia(){
double zong=0;
for (int i = 0; i <data.size() ; i++) {
List<GouWuChBean.DataBean.ListBean> list = data.get(i).getList();
for (int j = 0; j <list.size() ; j++) {
boolean click = list.get(j).isClick();
if (click) {
String num = list.get(j).getNum();
String price = list.get(j).getPrice();
int i1 = Integer.parseInt(num);
double v = Double.parseDouble(price);
zong += i1 * v;
}
}
}
zongjia.setText(“总价为:¥”+zong+"");
}
//
@Override
public void zong() {
getzongjia();
}
}
父Adapter
public class ShangPinAdapter extends RecyclerView.Adapter<ShangPinAdapter.MMA> {
Context context;
LayoutInflater inflater;
private ZiAdapter adapter;
private ZongJiaintenter zongJiaintenter;
public ShangPinAdapter(Context contexts, ZongJiaintenter zongJiaintenters) {
this.zongJiaintenter = zongJiaintenters;
this.context = contexts;
this.inflater = LayoutInflater.from(context);
}
private CheckBox quanxuan;
public void setQuanxuan(CheckBox quanxuan) {
this.quanxuan = quanxuan;
}
@NonNull
@Override
public MMA onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = inflater.inflate(R.layout.gouwuchelayout, viewGroup, false);
MMA mma = new MMA(view);
return mma;
}
@Override
public void onBindViewHolder(@NonNull MMA mma, final int i) {
String sellerName = data.get(i).getSellerName();
mma.funame.setText(sellerName);
boolean click = data.get(i).isClick();
mma.fuclick.setChecked(click);
LinearLayoutManager manager = new LinearLayoutManager(context);
manager.setOrientation(LinearLayoutManager.VERTICAL);
mma.ziRecyclerView.setLayoutManager(manager);
adapter = new ZiAdapter(context,zongJiaintenter);
adapter.setFuclick(mma.fuclick, data);
adapter.setQuanxuan(quanxuan);
mma.ziRecyclerView.setAdapter(adapter);
final List<GouWuChBean.DataBean.ListBean> list = data.get(i).getList();
adapter.setData(list);
mma.fuclick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox box = (CheckBox) v;
boolean checked = box.isChecked();
data.get(i).setClick(checked);
for (int j = 0; j < list.size(); j++) {
list.get(j).setClick(checked);
}
boolean quabxuanss = quabxuanss();
quanxuan.setChecked(quabxuanss);
zongJiaintenter.zong();
notifyDataSetChanged();
}
});
}
private boolean quabxuanss() {
for (int i = 0; i < data.size(); i++) {
boolean click = data.get(i).isClick();
if (!click) {
return false;
}
}
return true;
}
@Override
public int getItemCount() {
return data.size();
}
List<GouWuChBean.DataBean> data = new ArrayList<>();
public void setData(List<GouWuChBean.DataBean> datas) {
this.data.clear();
this.data.addAll(datas);
notifyDataSetChanged();
}
public class MMA extends RecyclerView.ViewHolder {
private final CheckBox fuclick;
private final TextView funame;
private final RecyclerView ziRecyclerView;
public MMA(@NonNull View itemView) {
super(itemView);
fuclick = itemView.findViewById(R.id.fuclick);
funame = itemView.findViewById(R.id.funame);
ziRecyclerView = itemView.findViewById(R.id.ziRecyclerView);
}
}
}
子Adapter
public class ZiAdapter extends RecyclerView.Adapter<ZiAdapter.BBA> {
Context context;
LayoutInflater inflater;
private ZongJiaintenter zongJiaintenter;
public ZiAdapter(Context context1, ZongJiaintenter zongJiaintenters) {
this.zongJiaintenter = zongJiaintenters;
this.context = context1;
this.inflater = LayoutInflater.from(context);
}
private CheckBox quanxuan;
public void setQuanxuan(CheckBox quanxuan) {
this.quanxuan = quanxuan;
}
private CheckBox fuclick;
private List<GouWuChBean.DataBean> listBeans;
public void setFuclick(CheckBox fuclick, List<GouWuChBean.DataBean> beanList) {
this.listBeans = beanList;
this.fuclick = fuclick;
}
@NonNull
@Override
public BBA onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = inflater.inflate(R.layout.zilayout, viewGroup, false);
BBA bba = new BBA(view);
return bba;
}
@Override
public void onBindViewHolder(@NonNull final BBA bba, final int i) {
String price = list.get(i).getPrice();
bba.zijiage.setText("¥" + price);
String title = list.get(i).getTitle();
bba.ziname.setText(title);
Uri uri = Uri.parse(list.get(i).getImages());
bba.ziimg.setImageURI(uri);
boolean click = list.get(i).isClick();
bba.ziclick.setChecked(click);
String num = list.get(i).getNum();
bba.jiajianqi.setShuliang(num);
bba.jiajianqi.setJia(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = list.get(i).getNum();
int i1 = Integer.parseInt(num);
i1++;
list.get(i).setNum(i1 + "");
bba.jiajianqi.setShuliang(i1 + "");
zongJiaintenter.zong();
notifyDataSetChanged();
}
});
bba.jiajianqi.setJian(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = list.get(i).getNum();
int i1 = Integer.parseInt(num);
i1--;
if (i1 > 0) {
list.get(i).setNum(i1 + "");
bba.jiajianqi.setShuliang(i1 + "");
zongJiaintenter.zong();
}
notifyDataSetChanged();
}
});
bba.ziclick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox box = (CheckBox) v;
boolean checked = box.isChecked();
list.get(i).setClick(checked);
boolean fuclicks = fuclicks();
fuclick.setChecked(fuclicks);
boolean quanxuans = quanxuans();
quanxuan.setChecked(quanxuans);
zongJiaintenter.zong();
notifyDataSetChanged();
}
});
}
private boolean quanxuans() {
for (int i = 0; i < listBeans.size(); i++) {
List<GouWuChBean.DataBean.ListBean> list = listBeans.get(i).getList();
for (int j = 0; j < list.size(); j++) {
boolean click = list.get(j).isClick();
if (!click) {
return false;
}
}
}
return true;
}
private boolean fuclicks() {
for (int i = 0; i < list.size(); i++) {
boolean click = list.get(i).isClick();
if (!click) {
return false;
}
}
return true;
}
@Override
public int getItemCount() {
return list.size();
}
List<GouWuChBean.DataBean.ListBean> list = new ArrayList<>();
public void setData(List<GouWuChBean.DataBean.ListBean> lists) {
this.list.clear();
this.list.addAll(lists);
notifyDataSetChanged();
}
public class BBA extends RecyclerView.ViewHolder {
private final TextView zijiage;
private final TextView ziname;
private final SimpleDraweeView ziimg;
private final CheckBox ziclick;
private final JiaJianQi jiajianqi;
public BBA(@NonNull View itemView) {
super(itemView);
zijiage = itemView.findViewById(R.id.zijiage);
ziname = itemView.findViewById(R.id.ziname);
ziimg = itemView.findViewById(R.id.ziSimpleDraweeView);
ziclick = itemView.findViewById(R.id.zi);
jiajianqi = itemView.findViewById(R.id.jiajianqi);
}
}
}