购物车+全选+隐藏显示+结算
MainActivity
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
MyAdapter adapter;
List<Bean.DataBean> lists=new ArrayList<>();
CheckBox checkBox,show;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
getData();
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(adapter.allCheck){
adapter.setAllCheck(false);
adapter.notifyDataSetChanged();
}else {
adapter.setAllCheck(true);
adapter.notifyDataSetChanged();
}
}
});
// 调用适配器监听 实时计算价格
adapter.setListener(new MyListener() {
@Override
public void JiSuan() {
price();
}
});
}
private void price() {
int count=0;
for (int i = 0; i < lists.size(); i++) {
//拿到集合中每个item,判断check状态
Bean.DataBean dataBean = lists.get(i);
boolean checked = dataBean.checked;
if(checked){
int price = dataBean.getNum() * dataBean.check_num;
count+=price;
}
}
textView.setText(count+"");
}
private void getData() {
OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1\n")
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
List<Bean.DataBean> data = new Gson().fromJson(response.body(), Bean.class).getData();
lists.addAll(data);
adapter.notifyDataSetChanged();
}
});
}
private void init() {
recyclerView=findViewById(R.id.recyclerview);
adapter=new MyAdapter(lists,this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
checkBox=findViewById(R.id.one);
textView=findViewById(R.id.moneyNumber);
show=findViewById(R.id.show);
}
public void click(View view) {
switch (view.getId()){
case R.id.show:
// 点击编辑 - 显示复选框
if(show.isChecked()){
show.setText("完成");
adapter.setShow(true);
adapter.notifyDataSetChanged();
}else{
show.setText("编辑");
adapter.setShow(false);
adapter.notifyDataSetChanged();
}
// if(adapter.isShow()){
//
//
//
// }else {
//
// }
break;
case R.id.pay:
// 结算跳转页面
break;
}
}
}
Bean类
在Bean类里 加上两个属性
public boolean checked;//是否选中
public int check_num;//数量
适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
List<Bean.DataBean> lists;
Context context;
LayoutInflater layoutInflater;
boolean show=false; // 是否显示
boolean allCheck=false;//是否全选
MyListener listener;
public boolean isShow() {
return show;
}
public void setShow(boolean show) {
this.show = show;
}
public boolean isAllCheck() {
return allCheck;
}
public void setAllCheck(boolean allCheck) {
this.allCheck = allCheck;
}
public void setListener(MyListener listener) {
this.listener = listener;
}
public MyAdapter(List<Bean.DataBean> lists, Context context) {
this.lists = lists;
this.context = context;
layoutInflater=LayoutInflater.from(context);
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.layout_item, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
holder.price.setText("¥ "+lists.get(position).getNum());
holder.title.setText(lists.get(position).getTitle());
Glide.with(context).load(lists.get(position).getPic()).into(holder.imageView);
//显示复选框
if(show){
holder.checkBox.setVisibility(View.VISIBLE);
}else{
holder.checkBox.setVisibility(View.GONE);
}
//全选
if(allCheck){
holder.checkBox.setChecked(true);
lists.get(position).checked=true;
//接口回调
listener.JiSuan();
}else{
holder.checkBox.setChecked(false);
lists.get(position).checked=false;
listener.JiSuan();
}
// 点击复选框
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
lists.get(position).checked=b;
listener.JiSuan();
}
});
// 加减数量
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = holder.good_num.getText().toString();
int number = Integer.parseInt(s);
holder.good_num.setText(number+1+"");
lists.get(position).check_num=number+1;
listener.JiSuan();
}
});
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = holder.good_num.getText().toString();
int number = Integer.parseInt(s);
if(number-1>=0){
holder.good_num.setText(number-1+"");
lists.get(position).check_num=number-1;
}else{
Toast.makeText(context, "数量小于0", Toast.LENGTH_SHORT).show();
}
listener.JiSuan();
}
});
}
@Override
public int getItemCount() {
return lists.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
CheckBox checkBox;
ImageView imageView,add,delete;
TextView title,price,good_num;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
checkBox=itemView.findViewById(R.id.item_checkbox);
imageView=itemView.findViewById(R.id.item_pic);
title=itemView.findViewById(R.id.item_title);
price=itemView.findViewById(R.id.price);
add=itemView.findViewById(R.id.image_add);
delete=itemView.findViewById(R.id.image_delete);
good_num=itemView.findViewById(R.id.good_number);
}
}
}
自定义接口
public interface MyListener {
void JiSuan();
}