package com.bwei.yuekao_7.ui.activity; import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.TextView; import com.bwei.yuekao_7.R; import com.bwei.yuekao_7.data.bean.UserBean; import com.bwei.yuekao_7.di.IContract; import com.bwei.yuekao_7.di.presenter.PresenterImpl; import com.bwei.yuekao_7.ui.adapter.SubAdapter; import com.google.gson.Gson; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; //继承完以后去P层 public class ShoppingCarActivity extends AppCompatActivity implements IContract.IView, SubAdapter.OnItemCheckListener { @BindView(R.id.cb_all) CheckBox cbAll; @BindView(R.id.tv_price) TextView tvPrice; @BindView(R.id.tv_count) TextView tvCount; private IContract.IPresenter presenter; private ArrayList<UserBean.DataBean> data; private Context context; private RecyclerView rl_view; private SubAdapter subAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shopping_car); ButterKnife.bind(this); rl_view = findViewById(R.id.rl_view); context = this; //三.1: presenter = new PresenterImpl(); //三.2: presenter.attachView(this); //三.5:(从P层(二点8过来)) presenter.responseData(); } @Override public void ShowResponse(final String msg) { //三.9: Log.i("aa", msg); runOnUiThread(new Runnable() { @Override public void run() { Gson gson = new Gson(); UserBean userBean = gson.fromJson(msg, UserBean.class); data = (ArrayList<UserBean.DataBean>) userBean.getData(); LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false); rl_view.setLayoutManager(manager); subAdapter = new SubAdapter(context, data); rl_view.setAdapter(subAdapter); //7.(从适配器8过来用于显示全选,反选,选最后一个) //设置完以后去Adapter subAdapter.setOnItemCheckListener(ShoppingCarActivity.this); } }); } //三.3:(从二6过来) @Override protected void onDestroy() { super.onDestroy(); //三.4:(创建Utils) presenter.detachView(this); } @OnClick({R.id.cb_all, R.id.tv_price, R.id.tv_count}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.cb_all: //1.去bean添加新增字段( private boolean isChecked;重写getter和setter方法 在list后添加) /* * private List<ListBean> list; //新增字段 private boolean isChecked; public boolean getChecked() { return isChecked; } public void setChecked(boolean checked) { isChecked = checked; } * */ //2.如果选中,设置子条目全部选中 if (cbAll.isChecked()){ //3.对集合中的每个条目定义为被选中 for (int i = 0; i < data.size(); i++) { data.get(i).setChecked(true); } //5.刷新适配器 subAdapter.notifyDataSetChanged(); }else { //4.如果未选中,设置子条目全部没选中 for (int i = 0; i < data.size(); i++) { data.get(i).setChecked(false); } //6.刷新适配器(去适配器) subAdapter.notifyDataSetChanged(); } break; case R.id.tv_price: break; case R.id.tv_count: break; } } @Override public void onItemChecked(int position, boolean checked) { //8.更新数据源 data.get(position).setChecked(checked); boolean tag = true; //9.遍历集合,查看是否有数据源未选中 for (UserBean.DataBean dataBean : data ){ if (dataBean.getChecked() == false){ tag = false; } } cbAll.setChecked(tag); subAdapter.notifyDataSetChanged(); } }
//适配器
package com.bwei.yuekao_7.ui.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; import com.bwei.yuekao_7.R; import com.bwei.yuekao_7.data.bean.UserBean; import com.squareup.picasso.Picasso; import java.util.ArrayList; /** * Created by 杨柳 on 2018/8/23. */ public class SubAdapter extends RecyclerView.Adapter<SubAdapter.SubViewHolder>{ private Context context; private ArrayList<UserBean.DataBean> data; public SubAdapter(Context context, ArrayList<UserBean.DataBean> data) { this.context = context; this.data = data; } @NonNull @Override public SubViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View rootView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); SubViewHolder subViewHolder = new SubViewHolder(rootView); return subViewHolder; } @Override public void onBindViewHolder(@NonNull SubViewHolder holder, int position) { String images = data.get(position).getList().get(0).getImages(); if ( images != null && images.contains("|")){ String[] imgUrl = images.split("\\|"); Picasso.get().load(imgUrl[0]).into(holder.iv_showIcon); }else { Picasso.get().load(images).into(holder.iv_showIcon); } //对文字展示 holder.tv_showInfo.setText(data.get(position).getList().get(0).getTitle()); holder.tv_price.setText("单价是¥:"+data.get(position).getList().get(0).getPrice()); //1.获取数据源的条目信息 holder.check.setChecked(data.get(position).getChecked()); } @Override public int getItemCount() { return data.size(); } class SubViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private final CheckBox check; private final ImageView iv_showIcon; private final TextView tv_showInfo; private final TextView tv_price; public SubViewHolder(View itemView) { super(itemView); check = itemView.findViewById(R.id.cb_chose); iv_showIcon = itemView.findViewById(R.id.iv_showIcon); tv_showInfo = itemView.findViewById(R.id.tv_showInfo); tv_price = itemView.findViewById(R.id.tv_price); //2.设置监听方法(选第二个) check.setOnClickListener(this); } @Override public void onClick(View view) { //9.把点击时的位置进行回转 int position = getLayoutPosition(); //10. boolean checked = check.isChecked(); //8.----把9定义的position传进来 onItemCheckListener.onItemChecked(position,checked); } } //3.设置接口 public interface OnItemCheckListener{ //4.用于反馈 void onItemChecked(int position, boolean checked); } //5 OnItemCheckListener onItemCheckListener; //6. public void setOnItemCheckListener(OnItemCheckListener onItemCheckListener){ //7. this.onItemCheckListener = onItemCheckListener; } }