購物


//主頁

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;

import java.util.ArrayList;

import de.greenrobot.event.EventBus;
import de.greenrobot.event.Subscribe;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ArrayList<bean> list = new ArrayList<>();
    private RecyclerView mRe;
    private int sum = 0;
    private CheckBox mAllcheck;
    private int i = 0;
    /**
     * 總計:
     */
    private TextView mTv;
    /**
     * 付款
     */
    private Button mBt;
    private MyAdapter adapter;
    /**
     * 反選
     */
    private Button mFx;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EventBus.getDefault().register(this);
        addDate();
        initView();
    }

    public void addDate() {

        for (int i = 0; i < 10; i++) {
            bean bean1 = new bean("商品" + i, (i + 1), false);
            list.add(bean1);
        }

    }

    private void initView() {
        mRe = (RecyclerView) findViewById(R.id.re);
        mAllcheck = (CheckBox) findViewById(R.id.allcheck);
        mAllcheck.setOnClickListener(this);
        mTv = (TextView) findViewById(R.id.tv);
        mBt = (Button) findViewById(R.id.bt);
        mBt.setOnClickListener(this);
        mRe.setLayoutManager(new LinearLayoutManager(this));
        mRe.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        adapter = new MyAdapter(MainActivity.this, list);
        mRe.setAdapter(adapter);

        mFx = (Button) findViewById(R.id.fx);
        mFx.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.allcheck:
                boolean checked = mAllcheck.isChecked();
                sum = 0;
                adapter.updateCheck(checked);

                break;
            case R.id.bt:

                break;
            case R.id.fx:
                adapter.fx();
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

    @Subscribe
    public void all(CheckEvent msg) {
        mAllcheck.setChecked(msg.isCheck());
    }

    @Subscribe
    public void num(NumEvent numEvent) {
        i = numEvent.getNum();
        if (i >= 0) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mBt.setText("結算" + i);
                }
            });
        }
    }

    @Subscribe
    public void money(PriceEvent priceEvent) {

            sum += priceEvent.getEvprice();
            if(sum>=0){
                mTv.setText("總計:" + sum);
            }else{
                sum=0;
                mTv.setText("總計:" + sum);
            }

    }

}



//MyAdapter

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import java.util.ArrayList;

import de.greenrobot.event.EventBus;

/**
 * Created by dy on 2017/10/19.
 */

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    private Context context;
    private ArrayList<bean> list;
    private int i=0;
    private boolean zf=true;
    public MyAdapter(Context context, ArrayList<bean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);

        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        final ViewHolder holder1= (ViewHolder) holder;
        final bean bean = list.get(position);
        holder1.tv1.setText(bean.getName());
        holder1.tv2.setText(bean.getPrice()+"元");
        holder1.checkBox.setChecked(bean.isChecked());
        holder1.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean checked = holder1.checkBox.isChecked();
                bean.setChecked(checked);
                if(checked){
                    i++;
                    if(select()){
                        Log.i("TAG","true");
                        CheckEvent checkEvent = new CheckEvent();
                        checkEvent.setCheck(true);
                        EventBus.getDefault().post(checkEvent);
                        NumEvent numEvent = new NumEvent();
                        numEvent.setNum(i);
                        EventBus.getDefault().post(numEvent);
                        PriceEvent priceEvent = new PriceEvent();
                        priceEvent.setEvprice(bean.getPrice());
                        EventBus.getDefault().post(priceEvent);
                    }else{
                        Log.i("TAG","false");
                        PriceEvent priceEvent = new PriceEvent();
                        priceEvent.setEvprice(bean.getPrice());
                        EventBus.getDefault().post(priceEvent);
                        NumEvent numEvent = new NumEvent();
                        numEvent.setNum(i);
                        EventBus.getDefault().post(numEvent);
                    }
                }else {
                    Log.i("TAG","false2");
                    i--;
                    CheckEvent checkEvent = new CheckEvent();
                    checkEvent.setCheck(false);
                    EventBus.getDefault().post(checkEvent);
                    PriceEvent priceEvent = new PriceEvent();
                    priceEvent.setEvprice(-bean.getPrice());
                    EventBus.getDefault().post(priceEvent);

                    NumEvent numEvent = new NumEvent();
                    numEvent.setNum(i);
                    EventBus.getDefault().post(numEvent);
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView tv1;
        private final TextView tv2;
        private final CheckBox checkBox;

        public ViewHolder(View itemView) {
            super(itemView);
            tv1 = itemView.findViewById(R.id.item_tv);
            tv2 = itemView.findViewById(R.id.item_tv2);
            checkBox = itemView.findViewById(R.id.item_check);
        }
    }
    public boolean select(){
        for (bean b:list) {
            if(!b.isChecked()){
                return false;
            }
        }
        return true;
    }
    public void updateCheck(boolean bool){
        for (bean b:list) {
            b.setChecked(bool);
            if(bool){
                PriceEvent priceEvent = new PriceEvent();
                priceEvent.setEvprice(b.getPrice());
                EventBus.getDefault().post(priceEvent);
                NumEvent numEvent = new NumEvent();
                i=list.size();
                numEvent.setNum(i);
                EventBus.getDefault().post(numEvent);
            }else {
                PriceEvent priceEvent = new PriceEvent();
                priceEvent.setEvprice(0);
                EventBus.getDefault().post(priceEvent);
                NumEvent numEvent = new NumEvent();
                i=0;
                numEvent.setNum(i);
                EventBus.getDefault().post(numEvent);
            }
        }
        notifyDataSetChanged();
    }
    public void fx(){

        for (bean b:list) {
            if(b.isChecked()){
                b.setChecked(false);
                PriceEvent priceEvent = new PriceEvent();
                priceEvent.setEvprice(-b.getPrice());
                EventBus.getDefault().post(priceEvent);
            }else {
                b.setChecked(true);
                PriceEvent priceEvent = new PriceEvent();
                priceEvent.setEvprice(b.getPrice());
                EventBus.getDefault().post(priceEvent);
            }

        }
        NumEvent numEvent = new NumEvent();
        i=10-i;
        numEvent.setNum(i);
        EventBus.getDefault().post(numEvent);
        if(select()){
            CheckEvent checkEvent = new CheckEvent();
            checkEvent.setCheck(true);
            EventBus.getDefault().post(checkEvent);

        }else{
            CheckEvent checkEvent = new CheckEvent();
            checkEvent.setCheck(false);
            EventBus.getDefault().post(checkEvent);
        }
        notifyDataSetChanged();
    }

}

//Eventbus

public class CheckEvent {
    private boolean check;

    public boolean isCheck() {
        return check;
    }

    public void setCheck(boolean check) {
        this.check = check;
    }


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章