购物车

activity


package com.example.lianxi4shop;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;

import com.example.lianxi4shop.model.Mymodel;
import com.google.gson.Gson;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    String url = "http://www.zhaoapi.cn/product/getCarts";
    private ExpandableListView list;
    private CheckBox check;
    private TextView price;
    private Button btn;

    private MyAdapter mMyAdapter;

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

        initData();
    }

    private void initData() {
        HashMap<String ,String> map=new HashMap<>();
        map.put("uid","71");
        Mymodel mymodel=new Mymodel();
        mymodel.doPost(url, map, new Mymodel.GetModel() {
            @Override
            public void fail(Exception e) { }

            @Override
            public void response(String s) {
                ResponseBean responseBean = new Gson().fromJson(s, ResponseBean.class);
                if ("0".equals(responseBean.getCode())){
                    List<ResponseBean.DataBean> data = responseBean.getData();

                    mMyAdapter=new MyAdapter(data);
                    mMyAdapter.setOnCartListChangeListener(new MyAdapter.onListChangeListener() {
                        @Override
                        public void onSellerCheckedChange(int groupPosition) {
                            boolean ischeck = mMyAdapter.ischeck(groupPosition);
                            mMyAdapter.changcheck(groupPosition,!ischeck);
                            mMyAdapter.notifyDataSetChanged();
                            refresh();
                        }

                        @Override
                        public void onProductCheckedChange(int groupPosition, int childPosition) {
                            mMyAdapter.changdange(groupPosition,childPosition);
                            mMyAdapter.notifyDataSetChanged();
                            refresh();
                        }

                        @Override
                        public void onProducNumberChange(int groupPosition, int childPosition, int number) {
                            mMyAdapter.updatePrice(groupPosition,childPosition,number);
                            mMyAdapter.notifyDataSetChanged();
                            refresh();
                        }
                    });


                    list.setAdapter(mMyAdapter);

                    for (int i = 0; i <data.size() ; i++) {
                        list.expandGroup(i);
                    }


                    refresh();
                }
            }
        });
    }










    private void initView() {
        list = (ExpandableListView) findViewById(R.id.list);
        check = (CheckBox) findViewById(R.id.check);
        price = (TextView) findViewById(R.id.price);
        btn = (Button) findViewById(R.id.btn);

        check.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.check:
                boolean ischecked = mMyAdapter.ischecked();
                mMyAdapter.changAll(!ischecked);
                mMyAdapter.notifyDataSetChanged();
                refresh();

                break;
        }
    }

    public void refresh(){
        boolean ischecked = mMyAdapter.ischecked();
        check.setChecked(ischecked);

        int i = mMyAdapter.numAll();
        btn.setText(i+"");

        float prices = mMyAdapter.price();
        price.setText(prices+"");

    }
}

adapter

package com.example.lianxi4shop;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * date:2018.11.20
 * author:赵颖冰(lenovo)
 * function:
 */
class MyAdapter extends BaseExpandableListAdapter {
    List<ResponseBean.DataBean> list;


    public MyAdapter(List<ResponseBean.DataBean> data) {
        list = data;
    }

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

    @Override
    public int getChildrenCount(int groupPosition) {
        return list.get(groupPosition).getList() == null ? 0 : list.get(groupPosition).getList().size();
    }



    //创建接口/
    public interface onListChangeListener{
         //当商家的checkBox点击时回调

        void onSellerCheckedChange(int groupPosition);

        //当点击子条目商品的CheckBox回调

        void onProductCheckedChange(int groupPosition ,int childPosition);


         //当点击加减按钮的回调

        void onProducNumberChange(int groupPosition , int childPosition , int number);

    }
    //D.
    onListChangeListener mOnListChangeListener;
    //D.
    public void setOnCartListChangeListener(onListChangeListener onListChangeListener){
        mOnListChangeListener = onListChangeListener ;
    }


    /创建viewholder/
    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        ResponseBean.DataBean dataBean = list.get(groupPosition);
        GroupHolder groupHolder;
        if (convertView == null) {
            convertView = View.inflate(parent.getContext(), R.layout.item_group, null);
            groupHolder = new GroupHolder(convertView);
            convertView.setTag(groupHolder);
        } else {
            groupHolder = (GroupHolder) convertView.getTag();
        }
        groupHolder.shopname.setText(dataBean.getSellerName());

        boolean ischeck = ischeck(groupPosition);
        groupHolder.checkbox_group.setChecked(ischeck);

        groupHolder.checkbox_group.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOnListChangeListener.onSellerCheckedChange(groupPosition);
            }
        });

        return convertView;
    }



    public boolean ischeck(int groupPosition) {

            List<ResponseBean.DataBean.ListBean> listBeans = list.get(groupPosition).getList();
            for (int j = 0; j < listBeans.size(); j++) {
                int selected = listBeans.get(j).getSelected();
                if (selected==0){
                    return false;
                }

        }
        return true;
    }

    public boolean ischecked() {
        for (int i = 0; i < list.size(); i++) {
            List<ResponseBean.DataBean.ListBean> listBeans = list.get(i).getList();
            for (int j = 0; j < listBeans.size(); j++) {
                int selected = listBeans.get(j).getSelected();
                if (selected==0){
                    return false;
                }

            }
        }

        return true;
    }
    public int  numAll(){
        int nums=0;
        for (int i = 0; i < list.size(); i++) {
            List<ResponseBean.DataBean.ListBean> listBeans = list.get(i).getList();
            for (int j = 0; j < listBeans.size(); j++) {
                if (listBeans.get(j).getSelected()==1){
                    int num = listBeans.get(j).getNum();
                    nums+=num;
                }
            }
        }
        return nums;
    }
    public float  price(){
        int prices=0;
        for (int i = 0; i < list.size(); i++) {
            List<ResponseBean.DataBean.ListBean> listBeans = list.get(i).getList();
            for (int j = 0; j < listBeans.size(); j++) {
                if (listBeans.get(j).getSelected()==1){
                    int num = listBeans.get(j).getNum();
                    float price = listBeans.get(j).getPrice();

                    prices+=num*price;
                }
            }
        }
        return prices;
    }
    public void updatePrice(int groupPosition,int childPosition,int num){
        list.get(groupPosition).getList().get(childPosition).setNum(num);
    }
    public void changAll(boolean ischeck){
        for (int i = 0; i < list.size(); i++) {
            List<ResponseBean.DataBean.ListBean> listBeans = list.get(i).getList();
            for (int j = 0; j <listBeans.size(); j++) {
                listBeans.get(j).setSelected(ischeck?1:0);
            }
        }
    }
    public void changdange(int groupPosition,int childPosition){
        List<ResponseBean.DataBean.ListBean> listBeans = list.get(groupPosition).getList();
        ResponseBean.DataBean.ListBean listBean = listBeans.get(childPosition);
        listBean.setSelected(listBean.getSelected()==0?1:0);
    }
    public void changcheck(int groupPosition,boolean ischeck){
        List<ResponseBean.DataBean.ListBean> listBeans = list.get(groupPosition).getList();
        for (int i = 0; i <listBeans.size() ; i++) {
            ResponseBean.DataBean.ListBean listBean = listBeans.get(i);
            listBean.setSelected(ischeck?1:0);
        }

    }

    public static class GroupHolder {
        public View rootView;
        public CheckBox checkbox_group;
        public TextView shopname;

        public GroupHolder(View rootView) {
            this.rootView = rootView;
            this.checkbox_group = (CheckBox) rootView.findViewById(R.id.checkbox_group);
            this.shopname = (TextView) rootView.findViewById(R.id.shopname);
        }

    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {



        ChildViewHolder childViewHolder;
        if (convertView == null) {
            childViewHolder=new ChildViewHolder();
            convertView = View.inflate(parent.getContext(), R.layout.item_child, null);

            childViewHolder.product_icon_iv=convertView.findViewById(R.id.product_icon_iv);
            childViewHolder.product_title_name_tv=convertView.findViewById(R.id.product_title_name_tv);
            childViewHolder.product_price_tv=convertView.findViewById(R.id.product_price_tv);
            childViewHolder.child_cb=convertView.findViewById(R.id.child_cb);
            childViewHolder.mMyView = convertView.findViewById(R.id.myview);
            convertView.setTag(childViewHolder);
        }else {
            childViewHolder= (ChildViewHolder) convertView.getTag();
        }
        childViewHolder.product_title_name_tv.setText(list.get(groupPosition).getList().get(childPosition).getTitle());
        childViewHolder.product_price_tv.setText(list.get(groupPosition).getList().get(childPosition).getPrice()+"");

        childViewHolder.child_cb.setChecked(list.get(groupPosition).getList().get(childPosition).getSelected()==1);


        String images = list.get(groupPosition).getList().get(childPosition).getImages();
        String[] split = images.split("\\|");
        ImageLoader.getInstance().displayImage(split[0],childViewHolder.product_icon_iv);
        childViewHolder.mMyView.setNumber(list.get(groupPosition).getList().get(childPosition).getNum());
        childViewHolder.child_cb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOnListChangeListener.onProductCheckedChange(groupPosition,childPosition);
            }
        });
        childViewHolder.mMyView.setOnNumberChanger(new MyView.OnNumberChanger() {
            @Override
            public void onchang(int number) {
                mOnListChangeListener.onProducNumberChange(groupPosition,childPosition,number
                );
            }
        });





        return convertView;
    }
    public static class ChildViewHolder {

        public CheckBox child_cb;
        public ImageView product_icon_iv;
        public TextView product_title_name_tv;
        public TextView product_price_tv;
        MyView mMyView;
    }


























    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }

    @Override
    public Object getGroup(int groupPosition) {
        return null;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }

    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return 0;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }



}

自定义view

package com.example.lianxi4shop;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

/**
 * date:2018.11.20
 * author:赵颖冰(lenovo)
 * function:
 */
public class MyView extends LinearLayout implements View.OnClickListener {
    private int number=1;
    private TextView sub_tv;
    private TextView product_number_tv;
    private TextView add_tv;


    public MyView(Context context) {
        this(context, null);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        View view = inflate(context, R.layout.view_layout, this);

        sub_tv = (TextView) findViewById(R.id.sub_tv);
        product_number_tv = (TextView) findViewById(R.id.product_number_tv);
        add_tv = (TextView) findViewById(R.id.add_tv);

        sub_tv.setOnClickListener(this);
        add_tv.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.sub_tv:
                if (number>1){
                    --number;
                    product_number_tv.setText(number+"");
                    if (mOnNumberChanger !=null){
                        mOnNumberChanger.onchang(number);
                    }

                }else {
                    Toast.makeText(getContext(), "不能再少了", Toast.LENGTH_SHORT).show();
                }
                    break;
            case R.id.add_tv:
                ++number;
                product_number_tv.setText(number+"");
                if (mOnNumberChanger !=null){
                    mOnNumberChanger.onchang(number);
                }
                break;
        }
    }


    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
        product_number_tv.setText(number+"");
    }

    public interface OnNumberChanger{
        void onchang(int number);
    }
    private OnNumberChanger  mOnNumberChanger;

    public void setOnNumberChanger(OnNumberChanger onNumberChanger) {
        mOnNumberChanger = onNumberChanger;
    }
}

python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值