Activitymain。xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/shopcar_RecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<!--底部悬浮-->
<LinearLayout
android:id="@+id/rl_bottom"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/layout_coll"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:gravity="center">
<CheckBox
android:id="@+id/cb_checkAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/layout_shopping_cart"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="15"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="合计:¥"
android:layout_marginLeft="20dp"
/>
<TextView
android:id="@+id/tv_total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥0.0"
android:textSize="17sp"
android:textColor="#CF2424"
/>
</LinearLayout>
<TextView
android:id="@+id/tv_goBuy"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="5"
android:gravity="center"
android:text="去结算"
android:textColor="#ffffff"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
shopcar_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/bottom_wrapper"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#f0f"
android:weightSum="1"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_delShop"
android:layout_width="80dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:background="#FF5F71"
android:gravity="center"
android:text="删除"
android:textColor="#fff"
android:textSize="20dp" />
<!--你要显示的按钮-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<CheckBox
android:id="@+id/cb_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:layout_marginRight="10dp">
<ImageView
android:id="@+id/img_shop_pic"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_vertical"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dp"
>
<TextView
android:id="@+id/tv_shop_name"
android:layout_width="match_parent"
android:layout_height="70dp"
android:text="睡不醒的王荣琦"
android:maxLines="3"
android:maxEms="25"
android:ellipsize="end"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/tv_shop_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#CF2424"
android:text="¥520.00"
android:layout_gravity="center_vertical"
android:layout_weight="1"
/>
<TextView
android:id="@+id/tv_subnum"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="-"
/>
<TextView
android:id="@+id/tv_num"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="2"
android:gravity="center"
android:background="#2222"
/>
<TextView
android:id="@+id/tv_addnum"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="+"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
ActivityMain.java
package com.example.myapplication.activity;
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.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.myapplication.R;
import com.example.myapplication.adapter.MyAdapter;
import com.example.myapplication.bean.Result;
import com.example.myapplication.bean.UserEntity;
import com.example.myapplication.bean.Users;
import com.example.myapplication.core.DataCall;
import com.example.myapplication.precenter.ListPrecemter;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends AppCompatActivity {
@BindView(R.id.shopcar_RecyclerView)
RecyclerView mXRecyclerView;
@BindView(R.id.cb_checkAll)
CheckBox checkAll;
@BindView(R.id.tv_total)
TextView tv_total;
@BindView(R.id.tv_goBuy)
TextView tv_goBuy;
MyAdapter myAdapter;
List<Users> result;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
ListPrecemter listPrecemter=new ListPrecemter(new ListData());
listPrecemter.reqeust("鞋",1,10);
}
private class ListData implements DataCall<Result<List<Users>>>{
@Override
public void success(Result<List<Users>> data) {
if (data.getStatus().equals("0000")){
result = data.getResult();
LinearLayoutManager manager=new LinearLayoutManager(MainActivity.this);
mXRecyclerView.setLayoutManager(manager);
myAdapter=new MyAdapter(MainActivity.this,result);
mXRecyclerView.setAdapter(myAdapter);
myAdapter.setOnShopItemClick(new MyAdapter.OnShopItemClick() {
@Override
public void checkBoxClick(View view, int i) {
if (result.get(i).isFlag()) {
result.get(i).setFlag(false);
checkAll.setChecked(false);
}else {
result.get(i).setFlag(true);
}
getTotal();
myAdapter.notifyDataSetChanged();
}
@Override
public void subItemClick(View view, int position) {
int count = result.get(position).getSaleNum();
if(count<=1){
Toast.makeText(MainActivity.this, "呀,不能再少啦!", Toast.LENGTH_SHORT).show();
}else {
count--;
result.get(position).setSaleNum(count);
if(result.get(position).isFlag()){
getTotal();
}
}
myAdapter.notifyDataSetChanged();
}
@Override
public void addItemClick(View view, int position) {
int count = result.get(position).getSaleNum();
count++;
result.get(position).setSaleNum(count);
if(result.get(position).isFlag()){
getTotal();
}
myAdapter.notifyDataSetChanged();
}
});
}
}
@Override
public void fail(Result result) {
}
}
private void getTotal() {
double total =0;
int num =0;
for (int i = 0; i < myAdapter.getItemCount(); i++) {
Users users = result.get(i);
if (users.isFlag()){
total += users.getPrice()*users.getSaleNum();
num += users.getSaleNum();
}
}
tv_total.setText(""+total);
tv_goBuy.setText("去结算("+num+")");
}
}
adapter.java
package com.example.myapplication.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.example.myapplication.R;
import com.example.myapplication.bean.Users;
import com.example.myapplication.view.AddSubLayout;
import com.facebook.drawee.view.SimpleDraweeView;
import com.squareup.picasso.Picasso;
import java.util.List;
import butterknife.OnClick;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<Users> list;
private OnShopItemClick onShopItemClick;
public MyAdapter(Context context, List<Users> list) {
this.context = context;
this.list = list;
}
public MyAdapter(OnShopItemClick onShopItemClick) {
this.onShopItemClick = onShopItemClick;
}
public interface OnShopItemClick{
void checkBoxClick(View view,int i);
void subItemClick(View view,int position);
void addItemClick(View view,int position);
}
public void setOnShopItemClick(OnShopItemClick onShopItemClick) {
this.onShopItemClick = onShopItemClick;
}
@NonNull
@Override
public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.shopcar_item, viewGroup, false);
ViewHolder holder=new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.ViewHolder mViewHolder, final int i) {
Picasso.with(context).load(list.get(i).getMasterPic()).into(mViewHolder.img_shop_pic);
mViewHolder.tv_shop_name.setText(list.get(i).getCommodityName());
mViewHolder.tv_shop_price.setText("¥"+list.get(i).getPrice());
mViewHolder.tv_num.setText(list.get(i).getSaleNum()+"");
boolean flag = list.get(i).isFlag();
if(flag){
mViewHolder.cb_check.setChecked(true);
}else {
mViewHolder.cb_check.setChecked(false);
}
mViewHolder.cb_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onShopItemClick.checkBoxClick(view,i);
}
});
//加减数量点击事件
mViewHolder.tv_subnum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onShopItemClick.subItemClick(view,i);
}
});
mViewHolder.tv_addnum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onShopItemClick.addItemClick(view,i);
}
});
//删除购物车数据
mViewHolder.tv_delShop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.remove(i);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox cb_check;
private ImageView img_shop_pic;
private TextView tv_shop_name;
private TextView tv_shop_price;
private TextView tv_subnum;
private TextView tv_num;
private TextView tv_addnum;
private final TextView tv_delShop;
public ViewHolder(@NonNull View itemView) {
super(itemView);
cb_check = itemView.findViewById(R.id.cb_check);
img_shop_pic = itemView.findViewById(R.id.img_shop_pic);
tv_shop_name = itemView.findViewById(R.id.tv_shop_name);
tv_shop_price = itemView.findViewById(R.id.tv_shop_price);
tv_subnum = itemView.findViewById(R.id.tv_subnum);
tv_num = itemView.findViewById(R.id.tv_num);
tv_addnum = itemView.findViewById(R.id.tv_addnum);
tv_delShop = itemView.findViewById(R.id.tv_delShop);
}
}
}