适配器
public class DataAdapter extends XRecyclerView.Adapter<DataAdapter.ViewHodder> {
Context context;
List<ResultBean> list;
public DataAdapter(Context context, List<ResultBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public ViewHodder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
return new ViewHodder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHodder viewHodder, final int i) {
Glide.with(context).load(list.get(i).getPic())
.diskCacheStrategy(DiskCacheStrategy.ALL)//外部缓存
.into(viewHodder.image);
viewHodder.name.setText(list.get(i).getCommodityName());
viewHodder.price.setText(list.get(i).getPrice()+" ");
//做关联
viewHodder.checkbox.setChecked(list.get(i).isCheck());
//获取商品的数量,把数量赋值给加减器的数量
int count = list.get(i).getCount();
viewHodder.addview1.nnn = count;
viewHodder.addview1.edt.setText(count+" ");//加减器复制
/*
* 子checkbox回调监听,通知改变价格
* */
viewHodder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//把商品复选框的状态设置给数据
list.get(i).setCheck(isChecked);
mCheckBoxCallBack.ChangeCallBack(list);
}
});
//加减器的加法
viewHodder.addview1.jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHodder.addview1.nnn++;
viewHodder.addview1.edt.setText(viewHodder.addview1.nnn+"");
list.get(i).setCount(viewHodder.addview1.nnn);
mCheckBoxCallBack.ChangeCallBack(list);
}
});
//加减器减法
viewHodder.addview1.jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewHodder.addview1.nnn>1){
viewHodder.addview1.nnn--;
viewHodder.addview1.edt.setText(viewHodder.addview1.nnn+" ");
list.get(i).setCount(viewHodder.addview1.nnn);
mCheckBoxCallBack.ChangeCallBack(list);
}else {
Toast.makeText(context, "再减买个锤子", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHodder extends RecyclerView.ViewHolder {
private final ImageView image;
private final TextView name,price;
private final CheckBox checkbox;
private final addView addview1;
public ViewHodder(@NonNull View itemView) {
super(itemView);
image = itemView.findViewById(R.id.item_Image);
name = itemView.findViewById(R.id.item_Name);
price = itemView.findViewById(R.id.item_Price);
checkbox = itemView.findViewById(R.id.mCheck);
addview1 = itemView.findViewById(R.id.addview);
}
}
//自定义回调
private CheckBoxCallBack mCheckBoxCallBack;
public void setmCheckBoxCallBack(CheckBoxCallBack mCheckBoxCallBack) {
this.mCheckBoxCallBack = mCheckBoxCallBack;
}
public interface CheckBoxCallBack{
void ChangeCallBack(List<ResultBean> list);
}
}
主页计算
public class MainActivity extends AppCompatActivity implements Contract.IView {
@BindView(R.id.mRecyler)
XRecyclerView mRecyler;
@BindView(R.id.mCheckAll)
CheckBox mCheckAll;
@BindView(R.id.mSum)
TextView mSum;
private Presenter presenter;
private ResultBeanDao mResultDao;
private List<ResultBean> list;
private DataAdapter dataAdapter;
private boolean isAutoSet = false;
private List<ResultBean> tempList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initDao();
initView();
}
//初始化dao
private void initDao() {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "green");
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster master = new DaoMaster(db);
DaoSession session = master.newSession();
mResultDao = session.getResultBeanDao();
}
private void initView() {
//初始化p鞥
presenter = new Presenter();
presenter.onAttachView(this);
presenter.getPrese(this);
boolean netWorInteNer = oKRtrofit.getInstance().NetWorInteNer(this);
//没网查询
if (!netWorInteNer) {
Log.i("AAAAA", "initView: 没网查询" + "没网");
QueryBuilder<ResultBean> builder = mResultDao.queryBuilder();
List<ResultBean> list = builder.orderAsc(ResultBeanDao.Properties.Id).list();
ArrayList<ResultBean> listbeans = new ArrayList<>();
for (Object o : list) {
if (o instanceof ResultBean) {
String name = ((ResultBean) o).getCommodityName();
int count = ((ResultBean) o).getCount();
String pic = ((ResultBean) o).getPic();
int price = ((ResultBean) o).getPrice();
ResultBean bean = new ResultBean();
bean.setPrice(price);
bean.setPic(pic);
bean.setCommodityName(name);
bean.setCount(count);
listbeans.add(bean);
}
}
DataAdapter dataAdapter = new DataAdapter(this, listbeans);
mRecyler.setAdapter(dataAdapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 1);
mRecyler.setLayoutManager(gridLayoutManager);
}
}
@Override
public void getView(String data) {
Gson gson = new Gson();//解析
JsonBean jsonBean = gson.fromJson(data, JsonBean.class);
list = jsonBean.getResult();
dataAdapter = new DataAdapter(this, list);
mRecyler.setAdapter(dataAdapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 1);
mRecyler.setLayoutManager(gridLayoutManager);
//加载数据的同时入库操作
for (int i = 0; i < list.size(); i++) {
ResultBean bean = list.get(i);
bean.setCommodityName(bean.getCommodityName());
bean.setCount(bean.getCount());
bean.setPic(bean.getPic());
bean.setPrice(bean.getPrice());
bean.setId(i);
mResultDao.insertOrReplace(bean);//入库
}
initAdapter();
initCheckListener();//总价的全选反选
}
private void initAdapter(){
//改变监听
dataAdapter.setmCheckBoxCallBack(new DataAdapter.CheckBoxCallBack() {
@Override
public void ChangeCallBack(List<ResultBean> list) {
tempList = list;
isAutoSet = true;
boolean isCheckAll = true;
double price = 0.0;
for (int i = 0; i < list.size(); i++) {
ResultBean resultBean = list.get(i);
if (resultBean.isCheck()) {
int count = resultBean.getCount();
int pricebena = resultBean.getPrice();
price += count * pricebena;
mSum.setText(price+" ");
}
}
for (int j = 0; j < list.size(); j++) {
ResultBean resultBean = list.get(j);
boolean isCheck = resultBean.getIsCheck();
if (!isCheck){
isCheckAll = false;
break;
}
}
mCheckAll.setChecked(isCheckAll);
}
});
}
//总价的全选反选
private void initCheckListener() {
mCheckAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isAutoSet = false;
checkMethod();
}
});
mCheckAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkMethod();
}
});
}
private void checkMethod(){
if (mCheckAll.isChecked()){
for (int i = 0; i < list.size(); i++) {
ResultBean resultBean = list.get(i);
resultBean.setCheck(true);
}
}else if(!isAutoSet){
for (int i = 0; i < list.size(); i++) {
ResultBean resultBean = list.get(i);
resultBean.setCheck(false);
}
}
setPrice();
dataAdapter.notifyDataSetChanged();
}
/*
* 全选时获取总价
* */
private void setPrice() {
if(tempList == null)
tempList = new ArrayList<>();
double total = 0.0 ;
for (int i = 0; i < tempList.size(); i++) {
ResultBean resultBean = list.get(i);
int count = resultBean.getCount();
int price = resultBean.getPrice();
if(resultBean.isCheck()) {
total += count * price;
}
}
mSum.setText(total+" ");
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.onDeach();
}
}