购物车2222

外部adapter
public class myadapter extends RecyclerView.Adapter<myadapter.oneholder> {

private Context context;
private List<news.DataBean> list;
private int layoutPosition;

public myadapter(Context context, List<news.DataBean> list) {
    this.context = context;
    this.list = list;
}

public interface OnCheckedChangeLisenter {
    void onChecked(int layoutPosition, boolean isChecked);

    void onOutterItemChecked(int layoutPosition, boolean checked);
}

public void setOnCheckedChangeLisenter(OnCheckedChangeLisenter onCheckedChangeLisenter) {
    this.onCheckedChangeLisenter = onCheckedChangeLisenter;
}

private RecyclerView rv_innerContainer;
OnCheckedChangeLisenter onCheckedChangeLisenter;
@Override
public oneholder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.include1, null);
    oneholder oneholder = new oneholder(view);
    return oneholder;
}

@Override
public void onBindViewHolder(final oneholder holder, final int position) {
    //获取下表
    layoutPosition = holder.getLayoutPosition();
    //外层被点击之后及时通过接口回调的形式通知全选/反选按钮
    holder.cb_02.setOnCheckedChangeListener(null);
    holder.cb_02.setChecked(list.get(position).getOutchecked());
    holder.cb_02.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            boolean ischecked = holder.cb_02.isChecked();
            list.get(position).setOutchecked(ischecked);
            if (ischecked){
                for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
                    list.get(holder.getLayoutPosition()).getList().get(i).setInnerchecked(true);
                }
            }else {
                for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
                    list.get(holder.getLayoutPosition()).getList().get(i).setInnerchecked(false);
                }
            }
            onCheckedChangeLisenter.onOutterItemChecked(holder.getLayoutPosition(),ischecked);
        }
    });
    //全选状态
    holder.cb_02.setChecked(list.get(position).getOutchecked());
    //赋值
    holder.cb_02.setText(list.get(position).getSellerName());
    //创建布局管理器
    LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
    //设置布局
    holder.recycleview01.setLayoutManager(manager);
    //创建布局
    inneradapter inneradapter = new inneradapter(context,list.get(position).getList());
    holder.recycleview01.setAdapter(inneradapter);
    //接口回传inneradapter
    inneradapter.setCheckedChangeListen(new inneradapter.OnCheckedChangeListen() {
        @Override
        public void onchecked(int layoutPosition, boolean checked) {
            //默认定义一个值为false
            boolean isAllInnerChecked = true;
            for (int i = 0; i <list.get(holder.getLayoutPosition()).getList().size() ; i++) {
                boolean innerchecked = list.get(holder.getLayoutPosition()).getList().get(i).getInnerchecked();
                isAllInnerChecked=(isAllInnerChecked&innerchecked);
            }
            //通过条目的设置状态给商家设置状态
            holder.cb_02.setChecked(isAllInnerChecked);
            //外层条目
            list.get(position).setOutchecked(isAllInnerChecked);
            //接口回调
            onCheckedChangeLisenter.onChecked(holder.getLayoutPosition(),checked);
        }
    });
}

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

//创建视图
class  oneholder extends  RecyclerView.ViewHolder{

    private final CheckBox cb_02;
    private final RecyclerView recycleview01;

    public oneholder(View itemView) {
        super(itemView);
        cb_02 = itemView.findViewById(R.id.cb_02);
        recycleview01 = itemView.findViewById(R.id.recycleview01);
    }
}

}
内部adapter
public class inneradapter extends RecyclerView.Adapter<inneradapter.twoholder> {
private Context context;
private List<news.DataBean.ListBean> list;

public inneradapter(Context context, List<news.DataBean.ListBean> list) {
    this.context = context;
    this.list = list;
}

@Override
public twoholder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.include2, null);
    twoholder twoholder = new twoholder(view);
    return twoholder;
}

@Override
public void onBindViewHolder(final twoholder holder, final int position) {
    TextView num = holder.toggle.findViewById(R.id.num);
    holder.toggle.setAddAndMinus(new togglebutton.AddAndMinus() {
        @Override
        public void add() {
            list.get(position).setNum(list.get(position).getNum() + 1);
            haha haha = new haha();
            // haha.setW(1);
            EventBus.getDefault().post(haha);
        }
        @Override
        public void minus() {
            list.get(position).setNum(list.get(position).getNum() - 1);
            haha haha = new haha();
            //haha.setW(1);
            EventBus.getDefault().post(haha);
        }
    });
    num.setText(list.get(position).getNum()+"");
    holder.cb_03.setChecked(list.get(position).getInnerchecked());
    //赋值
    holder.price.setText("单价是:"+list.get(position).getPrice());
    String[] strings = list.get(position).getImages().split("\\|");
    Uri uri = Uri.parse(strings[0]);
    holder.my_image_view.setImageURI(uri);

    holder.cb_03.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //内部状态更改完
            list.get(position).setInnerchecked(holder.cb_03.isChecked());
            //接口回传
            OnCheckedChangeListen.onchecked(holder.getLayoutPosition(),holder.cb_03.isChecked());

        }
    });

}

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

//创建视图
class  twoholder extends  RecyclerView.ViewHolder{

    private final CheckBox cb_03;
    private final SimpleDraweeView my_image_view;
    private final TextView price;
    private final togglebutton toggle;

    public twoholder(View itemView) {
        super(itemView);
        cb_03 = itemView.findViewById(R.id.cb_03);
        my_image_view = itemView.findViewById(R.id.my_image_view);
        price = itemView.findViewById(R.id.price);
        toggle = itemView.findViewById(R.id.toggle);
    }
}
private  OnCheckedChangeListen OnCheckedChangeListen;
//接口回调
public  interface  OnCheckedChangeListen{
    void  onchecked(int layoutPosition, boolean checked);
}
public  void  setCheckedChangeListen(OnCheckedChangeListen OnCheckedChangeListen){
    this.OnCheckedChangeListen =OnCheckedChangeListen;
}

}
Main
public class MainActivity extends AppCompatActivity {

@BindView(R.id.title1)
TextView title1;
@BindView(R.id.recycleview)
RecyclerView recycleview;
@BindView(R.id.cb_01)
CheckBox cb_01;
@BindView(R.id.zj)
TextView zj;
@BindView(R.id.js)
Button js;
private static final String url="http://www.zhaoapi.cn/product/getCarts?uid=71";
private LinearLayoutManager manager;
private Context context=this;
private List<news.DataBean> data;
private com.example.admin.likaibo.myadapter myadapter;
private com.example.admin.likaibo.news news;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    EventBus.getDefault().register(this);
    OkHttpClient build = new OkHttpClient.Builder().build();
    Request build1 = new Request.Builder().url(url).build();
    build.newCall(build1).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Log.i("xxxxxx","string");
        }

        @Override
        public void onResponse(Call call, final Response response) throws IOException {
            final String string = response.body().string();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Gson gson = new Gson();
                    Log.i("xxxxxx",string);
                     news = gson.fromJson(string, news.class);
                    data = news.getData();
                    manager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
                    //设置布局
                    recycleview.setLayoutManager(manager);
                    //设置适配器
                    myadapter = new myadapter(context, (ArrayList<news.DataBean>) data);
                    //设置
                    recycleview.setAdapter(myadapter);
                    myadapter.setOnCheckedChangeLisenter(new myadapter.OnCheckedChangeLisenter() {
                        @Override
                        public void onChecked(int layoutPosition, boolean isChecked) {
                            //全局标识
                            boolean isAllChecked = true;
                            //外层条目的判断
                            for (int i = 0; i <news.getData().size() ; i++) {
                                boolean outchecked = news.getData().get(i).getOutchecked();
                                //内层条目的判断
                                for (int j = 0; j <news.getData().get(i).getList().size() ; j++) {
                                    boolean innerchecked = news.getData().get(i).getList().get(j).getInnerchecked();
                                    isAllChecked=(isAllChecked&outchecked&innerchecked);
                                }
                            }
                            //刷新适配器
                            cb_01.setChecked(isAllChecked);
                            //刷新总体适配器
                            myadapter.notifyDataSetChanged();
                        }

                        @Override
                        public void onOutterItemChecked(int layoutPosition, boolean checked) {
                            news.getData().get(layoutPosition).setOutchecked(checked);
                            //全局条目的标识
                            boolean isAllChecked =true;
                            //外层条目的判断
                            for (int i = 0; i <news.getData().size() ; i++) {
                                boolean outchecked = news.getData().get(i).getOutchecked();
                                //内层条目的判断
                                for (int j = 0; j <news.getData().get(i).getList().size() ; j++) {
                                    boolean innerchecked = news.getData().get(i).getList().get(j).getInnerchecked();
                                    isAllChecked=(isAllChecked&outchecked&innerchecked);
                                }
                            }
                            cb_01.setChecked(isAllChecked);
                            //刷新总体适配器
                            myadapter.notifyDataSetChanged();
                        }
                    });
                }
            });
        }
    });
}

@OnClick(R.id.cb_01)
public void onViewClicked() {
    if (cb_01.isChecked()){
        for (int i = 0; i < data.size(); i++) {
            data.get(i).setOutchecked(true);
            for (int j = 0; j <data.get(i).getList().size(); j++) {
                data.get(i).getList().get(j).setInnerchecked(true);
            }
        }
    }else {
        for (int i = 0; i < data.size(); i++) {
            data.get(i).setOutchecked(false);
            for (int j = 0; j <data.get(i).getList().size(); j++) {
                data.get(i).getList().get(j).setInnerchecked(false);
            }
        }
    }
    initview();
   myadapter.notifyDataSetChanged();
}

private void initview() {
    int zong=0;
    for (int i = 0; i <news.getData().size(); i++) {
        for (int j = 0; j < news.getData().get(i).getList().size(); j++) {
            if (news.getData().get(i).getList().get(j).getInnerchecked()){

                zong+=news.getData().get(i).getList().get(j).getPrice() * news.getData().get(i).getList().get(j).getNum();
            }
        }
    }
    zj.setText("总价是:"+zong);
    myadapter.notifyDataSetChanged();
}
//定义订阅者
@Subscribe(threadMode = ThreadMode.MAIN)
public  void  msg(haha ha){
    //  int w = ha.getW();
    //  Toast.makeText(this, "w:" + w, Toast.LENGTH_SHORT).show();
    initview();
}
@Override
protected void onDestroy() {
    super.onDestroy();
    //注销
    EventBus.getDefault().unregister(this);
}

}
按钮自定义
public class togglebutton extends LinearLayout implements View.OnClickListener {

private Button jia;
private Button jian;
private TextView num;

public togglebutton(Context context) {
    super(context);
}

public togglebutton(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    initview(context);
}

private void initview(Context context) {
    LayoutInflater.from(context).inflate(R.layout.include3,this);
    jia = findViewById(R.id.jia);
    jian = findViewById(R.id.jian);
    num = findViewById(R.id.num);
    jia.setOnClickListener(this);
    jian.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    String s = num.getText().toString();
    int i = Integer.parseInt(s);
    switch (view.getId()){
        case R.id.jian:
        if (i>1){
            if (AddAndMinus!=null){
                AddAndMinus.minus();
            }
        }
        break;
        case R.id.jia:

                if (AddAndMinus!=null){
                    AddAndMinus.add();
                }

            break;
    }
}
private AddAndMinus AddAndMinus;
public void setAddAndMinus(AddAndMinus addAndMinus){
    this.AddAndMinus=addAndMinus;
}
public interface AddAndMinus{
    void add();
    void minus();
}

}

public class haha {
private int w;

public haha(int w) {
    this.w = w;
}

public haha() {
    super();
}

public int getW() {
    return w;
}

public void setW(int w) {
    this.w = w;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值