簡單_聯動

//activity


public class MainActivity extends AppCompatActivity implements IMainView {

    @BindView(R.id.recycle)
    RecyclerView recycle;
    @BindView(R.id.check_All)
    CheckBox checkAll;
    @BindView(R.id.price_All)
    TextView priceAll;
    private MainPresenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);//控件

        //本類方法
        initData();
    }

    private void initData() {
        //P層
        presenter = new MainPresenter();
        presenter.setView(this);
        //請求
        presenter.loadData();

    }

    //成功
    @Override
    public void onSuccess(NewBean bean) {
        List<NewBean.ResultsBean> results = bean.getResults();
        //佈局管理器
        LinearLayoutManager manager = new LinearLayoutManager(this);
        recycle.setLayoutManager(manager);
        //適配器
        MyAdapter adapter = new MyAdapter(this);
        adapter.initData(results);
        adapter.initCheckBox(checkAll);
        adapter.initTextView(priceAll);
        recycle.setAdapter(adapter);

    }

    //失敗
    @Override
    public void onFild(String message) {
        Log.e("onFild", message);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //解綁
        presenter.detachData();
    }
}

//適配器


public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    Context context;
    List<NewBean.ResultsBean> results;
    CheckBox checkAll;
    TextView priceAll;
    public MyAdapter(Context context) {
        this.context = context;
    }

    //價格
    public void initTextView(TextView priceAll) {
        this.priceAll = priceAll;
    }

    //全選
    public void initCheckBox(CheckBox checkAll) {
        this.checkAll = checkAll;
        checkAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CheckBox checkBoxAll = (CheckBox) v;
                boolean checked = checkBoxAll.isChecked();
                isAll(checked);
            }
        });
    }
    //isAll方法
    private void isAll(boolean checked) {
        for (int i = 0; i < results.size(); i++) {
            NewBean.ResultsBean resultsBean = results.get(i);
            resultsBean.setCheckBox(checked);
        }
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.item_recyc, null);
        ViewHolder holder = new ViewHolder(inflate);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyAdapter.ViewHolder viewHolder, final int i) {
        viewHolder.name_item.setText(results.get(i).getTitle());
        //賦值
        viewHolder.check_item.setChecked(results.get(i).isCheckBox());
        viewHolder.check_item.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                results.get(i).setCheckBox(isChecked);
                //去循環判讀
                boolean item_check = item_check();
                //如果全選中那就選中全選按鈕或者相反
                checkAll.setChecked(item_check);
                //獲取價格
                double price = results.get(i).getPrice();
                //判斷是否選中
                if (isChecked){
                    allPrice+=price;
                }else{
                    allPrice-=price;
                }
                priceAll.setText(allPrice+"");
            }
        });

    }

    private double allPrice = 0;

    //item_check方法
    private boolean item_check() {
        for (int i = 0; i < results.size(); i++) {
            boolean checkBox = results.get(i).isCheckBox();
            if(!checkBox){
                return false;
            }
        }
        return true;
    }

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

    //數據
    public void initData(List<NewBean.ResultsBean> results) {
        this.results = results;
    }


    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView name_item;
        CheckBox check_item;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            name_item = itemView.findViewById(R.id.name_item);
            check_item = itemView.findViewById(R.id.check_item);
        }
    }
}

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