project的maven仓库
maven { url 'https://jitpack.io' }
左滑删除的依赖
implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.2.1'
购物车的fragmnet
public class frag_03 extends BaseFrament implements XRecyclerView.LoadingListener {
private List<carbean> list;
CarPrecenter carPrecenter;
CarAdapter carAdapter;
UserDataDao userDataDao;
List<carbean> OList;
UserData userData;
TextView cartTotal;
CheckBox cartCheckall;
TextView cartBtnBuy;
XRecyclerView xRecyclerView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.item_03,container,false);
cartTotal=view.findViewById(R.id.cart_total);
cartCheckall=view.findViewById(R.id.cart_checkall);
cartBtnBuy=view.findViewById(R.id.cart_btn_buy);
xRecyclerView=view.findViewById(R.id.xrecyclerview);
ButterKnife.bind(getActivity());
view.findViewById(R.id.cart_checkall).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cart_checkall://全选
break;
case R.id.cart_btn_buy:
break;
}
}
});
view.findViewById(R.id.cart_btn_buy).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cart_checkall://全选
break;
case R.id.cart_btn_buy:
break;
}
}
});
carPrecenter=new CarPrecenter(new CarData());
userDataDao=DaoMaster.newDevSession(getActivity(),UserDataDao.TABLENAME).getUserDataDao();
userData = userDataDao.loadByRowId(1);
OList=new ArrayList<>();
long userId = userData.getUserId();
String sessionId = userData.getSessionId();
carPrecenter.reqeust((int)userId,sessionId);
carAdapter = new CarAdapter(getActivity());
xRecyclerView.setAdapter(carAdapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
xRecyclerView.setLayoutManager(linearLayoutManager);
xRecyclerView.setLoadingMoreEnabled(true);// 下拉加载更多
xRecyclerView.setLoadingListener(this);
xRecyclerView.setNestedScrollingEnabled(false);
return view;
}
@Override
public void onRefresh() {
UserData userData = userDataDao.loadByRowId(1);
String sessionId = userData.getSessionId();
int userId =(int)userData.getUserId();
if (carPrecenter.isRunning()){
xRecyclerView.refreshComplete();
xRecyclerView.loadMoreComplete();
return;
}
list.clear();
//刷新
xRecyclerView.refreshComplete();
//重新请求网络数据
carPrecenter.reqeust(userId,sessionId);
carAdapter.notifyDataSetChanged();
}
@Override
public void onLoadMore() {
}
private class CarData implements DataCall<Result<List<carbean>>> {
@Override
public void success(Result<List<carbean>> result) {
if (result.getStatus().equals("0000")){
list = result.getResult();
cartCheckall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (carbean cartBean : list) {
cartBean.setFlag(cartCheckall.isChecked());
}
carAdapter.notifyDataSetChanged();
cartTotal.setText("¥:"+getPrice(list));
}
});
carAdapter.getOnClick(new CarAdapter.SumCall() {
@Override
public void onClickJiaOrJian(List<carbean> list) {
cartTotal.setText("¥:"+getPrice(list));
}
});
carAdapter.getOnSelect(new CarAdapter.SelectCall() {
@Override
public void onAllOn(List<carbean> list) {
boolean flag = true;
for (carbean cartBean : list) {
if (!cartBean.isFlag()){
flag=false;
}
}
cartTotal.setText("¥:"+getPrice(list));
cartCheckall.setChecked(flag);
}
});
carAdapter.addAll(result.getResult());
carAdapter.notifyDataSetChanged();
}
}
@Override
public void fail(ApiException e) {
}
}
public double getPrice(List<carbean> list) {
double price = 0.0;
for (carbean cartBean : list) {
if (cartBean.isFlag()) {
price += cartBean.getCount() * cartBean.getPrice();
}
}
return price;
}
/**
* 数量与选中状态发生改变时,商品价格发生改变
*/
}
购物车的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10">
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrecyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom"
android:layout_marginTop="@dimen/dp_20"
android:layout_centerHorizontal="true">
</com.jcodecraeer.xrecyclerview.XRecyclerView>
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/dp_90">
<CheckBox
android:id="@+id/cart_checkall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"/>
<TextView
android:id="@+id/cart_total"
android:layout_width="0dp"
android:layout_weight="1"
android:textColor="#f90b0b"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:textSize="@dimen/sp_12"
android:gravity="left"
android:padding="@dimen/dp_5"
android:text="合计:0.0"/>
<TextView
android:id="@+id/cart_btn_buy"
android:layout_width="@dimen/dp_80"
android:layout_height="@dimen/dp_40"
android:gravity="center"
android:background="#f20822"
android:textColor="#fff"
android:text="去结算"
android:textSize="@dimen/sp_14"/>
</LinearLayout>
</RelativeLayout>
购物车的Recyclerview的Adapter
public class CarAdapter extends RecyclerView.Adapter<CarAdapter.ViewHolder>{
private Context context;
private List<carbean> list;
private SumCall sumCall;
private SelectCall selectCall;
public CarAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context,R.layout.shopping_item, null);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
viewHolder.cart_item_image.setImageURI(Uri.parse(list.get(i).getPic()));
viewHolder.cart_item_title.setText(list.get(i).getCommodityName());
viewHolder.cart_item_price.setText("¥:" + list.get(i).getPrice());
viewHolder.cart_item_num.setText("" + list.get(i).getCount());
viewHolder.cart_item_jia.setText("+");
viewHolder.cart_item_jian.setText("一");
viewHolder.cart_item_cb.setChecked(list.get(i).isFlag());
viewHolder.cart_item_cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.get(i).setFlag(viewHolder.cart_item_cb.isChecked());
selectCall.onAllOn(list);
}
});
viewHolder.cart_item_jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.get(i).setCount(list.get(i).getCount()+1);
viewHolder.cart_item_num.setText("" + list.get(i).getCount());
sumCall.onClickJiaOrJian(list);
}
});
viewHolder.cart_item_jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (list.get(i).getCount()>1){
list.get(i).setCount(list.get(i).getCount()-1);
viewHolder.cart_item_num.setText("" + list.get(i).getCount());
sumCall.onClickJiaOrJian(list);
}else {
Toast.makeText(context, "亲,不能再减啦!", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public void addAll(List<carbean> result) {
if (result != null) {
list.addAll(result);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final CheckBox cart_item_cb;
private final SimpleDraweeView cart_item_image;
private final TextView cart_item_title;
private final TextView cart_item_price;
private final TextView cart_item_jia, cart_item_num, cart_item_jian;
public ViewHolder(@NonNull View itemView) {
super(itemView);
cart_item_cb = itemView.findViewById(R.id.cart_item_cb);
cart_item_image = itemView.findViewById(R.id.cart_item_image);
cart_item_title = itemView.findViewById(R.id.cart_item_title);
cart_item_price = itemView.findViewById(R.id.cart_item_price);
cart_item_jia = itemView.findViewById(R.id.cart_item_jia);
cart_item_jian = itemView.findViewById(R.id.cart_item_jian);
cart_item_num = itemView.findViewById(R.id.cart_item_num);
}
}
public void getOnClick(SumCall sumCall){
this.sumCall = sumCall;
}
public interface SumCall{
void onClickJiaOrJian(List<carbean> list);
}
public void getOnSelect(SelectCall selectCall){
this.selectCall = selectCall;
}
public interface SelectCall{
void onAllOn(List<carbean> list);
}
}
购物车的recyclerview的条目
<?xml version="1.0" encoding="utf-8"?>
<com.mcxtzhang.swipemenulib.SwipeMenuLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:frseco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_20"
android:background="@drawable/shape_cart_item_bg"
android:orientation="horizontal">
<CheckBox
android:id="@+id/cart_item_cb"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_26"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/sp_14"
android:layout_marginTop="@dimen/dp_8" />
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/cart_item_image"
android:layout_width="@dimen/dp_97"
android:layout_height="@dimen/dp_97"
android:layout_margin="@dimen/dp_8" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_97"
android:layout_marginLeft="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_8"
android:orientation="vertical">
<TextView
android:id="@+id/cart_item_title"
android:layout_width="@dimen/dp_200"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingLeft="@dimen/dp_5"
android:paddingTop="@dimen/dp_5"
android:text="aaaaaaa"
android:textSize="@dimen/sp_12" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/cart_item_price"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:textSize="@dimen/sp_14"
android:gravity="bottom"
android:paddingLeft="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5"
android:text="¥ 12"
android:textColor="#f50909"/>
<TextView
android:id="@+id/cart_item_jian"
android:layout_width="@dimen/dp_0"
android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:text="一"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/shape_add_sub_layout"/>
<TextView
android:id="@+id/cart_item_num"
android:layout_width="@dimen/dp_0"
android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:text="2"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/shape_add_sub_layout"/>
<TextView
android:id="@+id/cart_item_jia"
android:layout_width="@dimen/dp_0"
android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:text="+"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/shape_add_sub_layout"
android:layout_marginRight="@dimen/dp_10"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<Button
android:id="@+id/shopp_del"
android:layout_width="@dimen/dp_25"
android:layout_height="@dimen/dp_97"
android:layout_alignParentRight="true"
android:background="#f00"
android:text="删除" />
</com.mcxtzhang.swipemenulib.SwipeMenuLayout>