package com.example.gouwuche2.activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
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.gouwuche.R;
import com.example.gouwuche.persenter.IPersenter;
import com.example.gouwuche.view.IView;
import com.example.gouwuche2.adapter.ContentAdapter;
import com.example.gouwuche2.bean.UserBean;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements IView,View.OnClickListener {
private String url = "http://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA";
private ContentAdapter adapter;
private IPersenter mPersenter;
private RecyclerView contents;
private List<UserBean.DataBean> mlist = new ArrayList<>();
private CheckBox cb;
private TextView text_totalPrice;
private Button but_totalNum;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shop_main);
mPersenter = new IPersenter(this);
initView();
startRequest();
initCb();
}
private void initCb() {
adapter.setOnItemClick(new ContentAdapter.OnItemClick() {
@Override
public void success() {
double totalPrice = 0;
int num = 0;
int totalNum = 0;
for(int i=0;i<mlist.size();i++)
{
totalNum = totalNum+mlist.get(i).getNum();
if(mlist.get(i).isCheck())
{
totalPrice = totalPrice+(mlist.get(i).getPrice()*mlist.get(i).getNum());
num = num+mlist.get(i).getNum();
}
}
if(num<totalNum)
{
cb.setChecked(false);
}else{
cb.setChecked(true);
}
text_totalPrice.setText("合计:"+totalPrice);
but_totalNum.setText("去结算"+"("+num+")");
}
});
}
private void initView() {
contents = findViewById(R.id.recyclerview);
adapter = new ContentAdapter(this);
contents.setAdapter(adapter);
cb = findViewById(R.id.cb_qx);
text_totalPrice = findViewById(R.id.price);
but_totalNum = findViewById(R.id.total);
cb.setOnClickListener(this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
contents.setLayoutManager(linearLayoutManager);
DividerItemDecoration decoration = new DividerItemDecoration(this,OrientationHelper.VERTICAL);
contents.addItemDecoration(decoration);
}
private void startRequest() {
Map<String,String> map = new HashMap<>();
map.put("page","1");
mPersenter.requestData(url,map,UserBean.class);
}
@Override
public void showRequest(Object data) {
UserBean user = (UserBean) data;
mlist.addAll(user.getData());
adapter.setMlist(mlist);
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.cb_qx:
checkSeller(cb.isChecked());
adapter.notifyDataSetChanged();
break;
}
}
private void checkSeller(boolean checked) {
adapter.selectOrRemoveAll(cb.isSelected());
double totalPrice = 0;
int num = 0;
for(int i=0;i<mlist.size();i++)
{
mlist.get(i).setCheck(checked);
totalPrice = totalPrice+(mlist.get(i).getPrice()*mlist.get(i).getNum());
num = num+mlist.get(i).getNum();
}
if(checked)
{
text_totalPrice.setText("合计:"+totalPrice);
but_totalNum.setText("去结算"+"("+num+")");
}else{
text_totalPrice.setText("合计:");
but_totalNum.setText("去结算(0)");
}
}
}
适配器
package com.example.gouwuche2.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.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.example.gouwuche.R;
import com.example.gouwuche2.bean.UserBean;
import java.util.ArrayList;
import java.util.List;
public class ContentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<UserBean.DataBean> mlist;
private Context mContext;
public ContentAdapter(Context context){
this.mContext = context;
mlist = new ArrayList<>();
}
public void setMlist(List<UserBean.DataBean> list) {
this.mlist = list;
notifyDataSetChanged();
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView icon;
TextView title,price,jia,jie;
EditText num;
CheckBox cb;
public ViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.item_icon);
title = itemView.findViewById(R.id.item_title);
price = itemView.findViewById(R.id.item_price);
jia = itemView.findViewById(R.id.item_jia);
jie = itemView.findViewById(R.id.item_jian);
num = itemView.findViewById(R.id.item_num);
cb = itemView.findViewById(R.id.item_cb);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mContext).inflate(R.layout.shop_item,viewGroup,false);
return new ContentAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
final ViewHolder holder = (ViewHolder) viewHolder;
holder.title.setText(mlist.get(i).getTitle());
holder.price.setText(mlist.get(i).getPrice()+"");
holder.num.setText(mlist.get(i).getNum()+"");
String R = "";
int K = mlist.get(i).getImages().length();
for(int j=0;j<K;j++)
{
if(mlist.get(i).getImages().substring(j,j+1).equals("|"))
{
R = mlist.get(i).getImages().substring(j+1,K).trim();
}
}
Glide.with(mContext).load(R).into(holder.icon);
holder.jie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int mNum = mlist.get(i).getNum();
if(mNum>1)
{
--mNum;
}else{
Toast.makeText(mContext,"商品数量不能少于1",Toast.LENGTH_LONG).show();
}
holder.num.setText(mNum+"");
mlist.get(i).setNum(mNum);
if(onItemClick!=null)
{
onItemClick.success();
}
}
});
holder.jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int mNum = mlist.get(i).getNum();
mNum++;
holder.num.setText(mNum+"");
mlist.get(i).setNum(mNum);
if(onItemClick!=null)
{
onItemClick.success();
}
}
});
holder.cb.setChecked(mlist.get(i).isCheck());
holder.cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mlist.get(i).setCheck(holder.cb.isChecked());
if(onItemClick!=null)
{
onItemClick.success();
}
}
});
}
public void selectOrRemoveAll(boolean isAllSelected){
for (UserBean.DataBean dataBean:mlist)
{
dataBean.setCheck(isAllSelected);
}
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return mlist.size();
}
OnItemClick onItemClick;
public void setOnItemClick(OnItemClick onItemClick) {
this.onItemClick = onItemClick;
}
public interface OnItemClick{
void success();
}
}