//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);
}
}
}