package com.example.yuekaofuxi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; 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 com.example.yuekaofuxi.adapter.MyRecycleView1; import com.example.yuekaofuxi.bean.Shangpin; import com.example.yuekaofuxi.bean.Shop; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView rlv; private ArrayList<Shop> list; private List<Shangpin> splist; private CheckBox cb_zong; private MyRecycleView1 m1; private double money; private TextView tv_zongjia; private int num; private Button bt_num; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initData() { list = new ArrayList<>(); for (int i = 0; i <10 ; i++) { splist = new ArrayList<>(); for (int j = 0; j <3 ; j++) { splist.add(new Shangpin(false,"商品"+(j+1),10.0+(j+1))); } list.add(new Shop(false,"商家"+(i+1), splist)); } setData(); } private void setData() { m1 = new MyRecycleView1(list,MainActivity.this); rlv.setLayoutManager(new LinearLayoutManager(MainActivity.this)); rlv.setAdapter(m1); m1.setZong(new MyRecycleView1.Zong() { @Override public void shangjia() { boolean flag=true; for (Shop shop : list) { for (Shangpin shangpin : shop.getSplist()) { if(shangpin.isSpselect()==false) { flag=false; } } } cb_zong.setChecked(flag); } @Override public void shangpin() { boolean flag=true; for (Shop shop : list) { for (Shangpin shangpin : shop.getSplist()) { if(shangpin.isSpselect()==false) { flag=false; } } } cb_zong.setChecked(flag); } }); m1.setSjjiage(new MyRecycleView1.Sjjiage() { @Override public void sjjg() { money=0; for (Shop shop : list) { for (Shangpin shangpin : shop.getSplist()) { if(shangpin.isSpselect()==true) { money=money+shangpin.getJiage(); } } } DecimalFormat decimalFormat=new DecimalFormat("######0.00"); tv_zongjia.setText("¥"+decimalFormat.format(money)); } }); m1.setSjshuliang(new MyRecycleView1.Sjshuliang() { @Override public void sjsl() { num=0; for (Shop shop : list) { for (Shangpin shangpin : shop.getSplist()) { if(shangpin.isSpselect()==true) { num++; } } } bt_num.setText("结钱("+num+")"); } }); } private void initView() { rlv = (RecyclerView) findViewById(R.id.rlv); cb_zong = (CheckBox) findViewById(R.id.cb_zong); tv_zongjia = (TextView) findViewById(R.id.tv_zongjia); bt_num = (Button) findViewById(R.id.bt_num); cb_zong.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { money=0; num=0; for (Shop shop : list) { for (Shangpin shangpin : shop.getSplist()) { if(cb_zong.isChecked()) { shangpin.setSpselect(true); money=money+shangpin.getJiage(); num=(shop.getSplist().size())*10; } else { shangpin.setSpselect(false); } } } m1.notifyDataSetChanged(); DecimalFormat decimalFormat=new DecimalFormat("######0.00"); tv_zongjia.setText("¥"+decimalFormat.format(money)); bt_num.setText("结钱("+num+")"); } }); } }
/*******************大适配器*****************/
package com.example.yuekaofuxi.adapter; import android.content.Context; import android.support.v7.widget.LinearLayoutManager; 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.TextView; import com.example.yuekaofuxi.R; import com.example.yuekaofuxi.bean.Shangpin; import com.example.yuekaofuxi.bean.Shop; import java.util.ArrayList; import java.util.List; /** * Created by 祝文 on 2017/10/24. */ public class MyRecycleView1 extends RecyclerView.Adapter<MyRecycleView1.MyViewHolder> { private ArrayList<Shop> list; private Context context; public MyRecycleView1(ArrayList<Shop> list, Context context) { this.list = list; this.context = context; } @Override public MyRecycleView1.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item1, null); return new MyViewHolder(view); } @Override public void onBindViewHolder(final MyRecycleView1.MyViewHolder holder, final int position) { holder.tv_shangjia.setText(list.get(position).getShangjia()); final List<Shangpin> splist = list.get(position).getSplist(); System.out.println("-----"+splist.size()); final MyRecycleView2 m2=new MyRecycleView2(splist,context); holder.rlv_zi.setLayoutManager(new LinearLayoutManager(context)); holder.rlv_zi.setAdapter(m2); boolean flag=true; for (Shangpin shangpin : splist) { if(shangpin.isSpselect()==false) { flag=false; } } holder.cb.setChecked(flag); m2.setGeshu(new MyRecycleView2.Geshu() { @Override public void gs() { boolean flag=true; for (Shangpin shangpin : splist) { if(shangpin.isSpselect()==false) { flag=false; } } holder.cb.setChecked(flag); zong.shangpin(); } }); holder.cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { for (Shangpin shangpin : splist) { if(holder.cb.isChecked()) { shangpin.setSpselect(true); } else { shangpin.setSpselect(false); } } m2.notifyDataSetChanged(); zong.shangjia(); //商家价格接口 sjjiage.sjjg(); //商家数量接口 sjshuliang.sjsl(); } }); //计算价钱 m2.setSpjiage(new MyRecycleView2.Spjiage() { @Override public void spjg() { sjjiage.sjjg(); } }); //计算数量 m2.setShuliang(new MyRecycleView2.Shuliang() { @Override public void spsl() { sjshuliang.sjsl(); } }); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private CheckBox cb; private TextView tv_shangjia; private RecyclerView rlv_zi; public MyViewHolder(View itemView) { super(itemView); cb=itemView.findViewById(R.id.cb); tv_shangjia=itemView.findViewById(R.id.tv_shangjia); rlv_zi=itemView.findViewById(R.id.rlv_zi); } } //总的复选框 private Zong zong; public void setZong(Zong zong) { this.zong = zong; } public interface Zong { void shangjia(); void shangpin(); } //商家复选框 private Sjjiage sjjiage; public void setSjjiage(Sjjiage sjjiage) { this.sjjiage = sjjiage; } public interface Sjjiage { void sjjg(); } //商家复选框数量 private Sjshuliang sjshuliang; public void setSjshuliang(Sjshuliang sjshuliang) { this.sjshuliang = sjshuliang; } public interface Sjshuliang { void sjsl(); } }
/*****************小适配器****************/
package com.example.yuekaofuxi.adapter; import android.content.Context; 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.CompoundButton; import android.widget.TextView; import com.example.yuekaofuxi.R; import com.example.yuekaofuxi.bean.Shangpin; import java.util.ArrayList; import java.util.List; /** * Created by 祝文 on 2017/10/24. */ public class MyRecycleView2 extends RecyclerView.Adapter<MyRecycleView2.MyViewHolder> { private List<Shangpin> splist; private Context context; public MyRecycleView2(List<Shangpin> splist, Context context) { this.splist = splist; this.context = context; } @Override public MyRecycleView2.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(context).inflate(R.layout.item2, null); MyViewHolder myViewHolder=new MyViewHolder(inflate); return myViewHolder; } @Override public void onBindViewHolder(final MyRecycleView2.MyViewHolder holder, final int position) { holder.cb_zi.setOnCheckedChangeListener(null); holder.tv_shangpin.setText(splist.get(position).getSp()); holder.tv_jiage.setText(splist.get(position).getJiage()+""); if(splist.get(position).isSpselect()==true) { holder.cb_zi.setChecked(true); geshu.gs(); } else { holder.cb_zi.setChecked(false); } holder.cb_zi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if( holder.cb_zi.isChecked()) { splist.get(position).setSpselect(true); } else { splist.get(position).setSpselect(false); } splist.get(position).setSpselect(b); geshu.gs(); spjiage.spjg(); shuliang.spsl(); } }); } @Override public int getItemCount() { return splist.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private CheckBox cb_zi; private TextView tv_shangpin; private TextView tv_jiage; public MyViewHolder(View itemView) { super(itemView); cb_zi=itemView.findViewById(R.id.cb_zi); tv_shangpin=itemView.findViewById(R.id.tv_shangpin); tv_jiage=itemView.findViewById(R.id.tv_jiage); } } private Geshu geshu; public void setGeshu(Geshu geshu) { this.geshu = geshu; } public interface Geshu { void gs(); } //构选复选框计算商品的价钱 private Spjiage spjiage; public void setSpjiage(Spjiage spjiage) { this.spjiage = spjiage; } public interface Spjiage { void spjg(); } //构选复选框计算数量 private Shuliang shuliang; public void setShuliang(Shuliang shuliang) { this.shuliang = shuliang; } public interface Shuliang { void spsl(); } }