购物车Recyclerview实现
来源:互联网 发布:.cn域名的ns记录 查询 编辑:程序博客网 时间:2024/06/05 09:48
Main_xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwie.goodscar.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/r1_review" android:layout_above="@+id/b" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> <RelativeLayout android:id="@+id/b" android:padding="10dp" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content"> <CheckBox android:id="@+id/selectall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/j" android:layout_width="wrap_content" android:padding="10dp" android:text="价钱:¥" android:textColor="#000" android:layout_toRightOf="@+id/selectall" android:layout_height="wrap_content" /> <TextView android:id="@+id/sumnoney" android:layout_width="wrap_content" android:padding="6dp" android:text="money" android:textSize="17dp" android:textColor="#c00" android:layout_toRightOf="@+id/j" android:layout_height="wrap_content" /></RelativeLayout></RelativeLayout> child.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <CheckBox android:id="@+id/boss_all" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:background="#ccc" android:layout_toRightOf="@+id/boss_all" android:id="@+id/boss" android:padding="10dp" android:text="boss" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView android:layout_below="@+id/boss" android:id="@+id/re2" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></RelativeLayout>childitem.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <CheckBox android:id="@+id/good_cb" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/good_iv" android:layout_toRightOf="@+id/good_cb" android:src="@mipmap/ic_launcher" android:layout_width="80dp" android:layout_height="80dp" /> <TextView android:id="@+id/good_shop" android:padding="6dp" android:layout_toRightOf="@+id/good_iv" android:text="店名" android:textSize="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/buy_content" android:text="context" android:layout_below="@+id/good_shop" android:layout_toRightOf="@+id/good_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:textColor="#c00" android:id="@+id/good_money" android:text="context" android:layout_below="@+id/buy_content" android:layout_toRightOf="@+id/good_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/good_j" android:text="X " android:layout_marginLeft="80dp" android:layout_below="@+id/buy_content" android:layout_toRightOf="@+id/good_money" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/good_num" android:text="mone " android:layout_below="@+id/buy_content" android:layout_toRightOf="@+id/good_j" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>在主Activity里面package com.bwie.goodscar;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.CheckBox;import android.widget.TextView;import com.bwie.goodscar.adapter.MyAdapter;import com.bwie.goodscar.bean.Bean;import com.bwie.goodscar.utils.NetUtils;import com.google.gson.Gson;import java.io.IOException;import java.util.ArrayList;import java.util.List;import okhttp3.Call;import okhttp3.Response;public class MainActivity extends AppCompatActivity { private RecyclerView recycle; private CheckBox cball; private TextView money; private List<Bean.DataBean> data; private MyAdapter ada; private int kb; private double money1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initview(); initdata(); setlistener(); } private void setlistener() { cball.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(cball.isChecked()){ for (Bean.DataBean bean : data) { bean.setFlag(true); List<Bean.DataBean.ListBean> list = bean.getList(); for (Bean.DataBean.ListBean listBean : list) { listBean.setSelected(1); } } }else{ for (Bean.DataBean bean : data) { bean.setFlag(false); List<Bean.DataBean.ListBean> list = bean.getList(); for (Bean.DataBean.ListBean listBean : list) { listBean.setSelected(0); } } } ada.notifyDataSetChanged(); } }); } private void initdata() { NetUtils.getResult(Api.LOOK_URL, new NetUtils.CallResult() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) { try { String str=response.body().string(); Gson gson=new Gson(); Bean bean = gson.fromJson(str, Bean.class); data = bean.getData(); runOnUiThread(new Runnable() { @Override public void run() { ada= new MyAdapter((ArrayList<Bean.DataBean>) data,MainActivity.this); recycle.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false)); recycle.setAdapter(ada); //回调的钱的接口 ada.setMoneyResult(new MyAdapter.MoneyResult() { @Override public void money() { kb= 0; money1= 0; for (Bean.DataBean dataBean : data) { List<Bean.DataBean.ListBean> been = dataBean.getList(); for (Bean.DataBean.ListBean listBean : been) { if(listBean.getSelected()==1){ kb++; money1+=listBean.getBargainPrice()*listBean.getNum(); } } } //设置总价 money.setText(money1+""); } }); } }); } catch (IOException e) { e.printStackTrace(); } } }); } private void initview() { recycle = (RecyclerView) findViewById(R.id.r1_review); cball = (CheckBox) findViewById(R.id.selectall); money = (TextView) findViewById(R.id.sumnoney); }}第一个适配器
package com.bwie.goodscar.adapter;import android.content.Context;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ListView;import android.widget.TextView;import com.bwie.goodscar.R;import com.bwie.goodscar.bean.Bean;import java.util.ArrayList;import java.util.List;public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> { private ArrayList<Bean.DataBean> list; private Context context; private ChildAdapter ada; public MyAdapter(ArrayList<Bean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,R.layout.item,null); return new MyHolder(view); } @Override public void onBindViewHolder(final MyHolder holder, final int position) { holder.title.setText(list.get(position).getSellerName()); final List<Bean.DataBean.ListBean> l = this.list.get(position).getList(); ada = new ChildAdapter((ArrayList<Bean.DataBean.ListBean>) l,context); holder.lv.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false)); holder.lv.setAdapter(ada); //根据数据,状态改变 holder.cb.setChecked(list.get(position).isFlag()); //商家改变子商品 holder.cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setFlag(!list.get(position).isFlag()); for (int i = 0; i < l.size(); i++) { if (list.get(position).isFlag()){ l.get(i).setSelected(1); }else { l.get(i).setSelected(0); } } holder.lv.setAdapter(ada); notifyDataSetChanged(); moneyResult.money(); } }); //计算钱 ada.setCallMoney(new ChildAdapter.CallMoney() { @Override public void changeMoney() { moneyResult.money(); } }); //子改变商家cb ada.setOnItemAllClick(new ChildAdapter.OnItemAllClick() { @Override public void all() { list.get(position).setFlag(true); holder.cb.setChecked(true); notifyDataSetChanged(); } @Override public void noall() { list.get(position).setFlag(false); holder.cb.setChecked(false); notifyDataSetChanged(); } }); } @Override public int getItemCount() { return list.size(); } class MyHolder extends RecyclerView.ViewHolder{ private RecyclerView lv; private TextView title; private CheckBox cb; public MyHolder(View itemView) { super(itemView); lv=itemView.findViewById(R.id.re2); title=itemView.findViewById(R.id.boss); cb=itemView.findViewById(R.id.boss_all); } } private MoneyResult moneyResult; public void setMoneyResult(MoneyResult moneyResult) { this.moneyResult = moneyResult; } public interface MoneyResult{ void money(); }}第二个适配器package com.bwie.goodscar.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import com.bwie.goodscar.R;import com.bwie.goodscar.bean.Bean;import java.util.ArrayList;public class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.MHolder> { private ArrayList<Bean.DataBean.ListBean> list; private Context context; public ChildAdapter(ArrayList<Bean.DataBean.ListBean> list, Context context) { this.list = list; this.context = context; } @Override public MHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,R.layout.childitem,null); return new MHolder(view); } @Override public void onBindViewHolder(final MHolder holder, final int position) { holder.title.setText(list.get(position).getSubhead()); holder.title.setMaxLines(1);//限制行 holder.money.setText(list.get(position).getBargainPrice()+""); holder.c.setText(list.get(position).getTitle()); holder.c.setMaxLines(1); holder.num.setText(list.get(position).getNum()+""); String[] split = list.get(position).getImages().split("\\|"); Glide.with(context).load(split[0]).into(holder.iv); //根据数据改变状态 if(list.get(position).getSelected()==1){ holder.cb.setChecked(true); }else{ holder.cb.setChecked(false); } //子商品的点击事件 holder.cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (holder.cb.isChecked()){ holder.cb.setChecked(true); list.get(position).setSelected(1); }else { holder.cb.setChecked(false); list.get(position).setSelected(0); } all(); notifyDataSetChanged(); callMoney.changeMoney(); } }); } //判断是否是全选的回调 private int sum=0; private void all() { for (int i = 0; i <list.size() ; i++) { if(list.get(i).getSelected()==1){ sum++; }else{ sum--; } } if(sum==list.size()){ onItemAllClick.all(); }else{ onItemAllClick.noall(); } sum=0; } private OnItemAllClick onItemAllClick; public void setOnItemAllClick(OnItemAllClick onItemAllClick) { this.onItemAllClick = onItemAllClick; } public interface OnItemAllClick{ void all(); void noall(); } @Override public int getItemCount() { return list.size(); } class MHolder extends RecyclerView.ViewHolder{ ImageView iv; TextView money; TextView title; TextView c; CheckBox cb; TextView num; public MHolder(View itemView) { super(itemView); iv=itemView.findViewById(R.id.good_iv); money=itemView.findViewById(R.id.good_money); title=itemView.findViewById(R.id.good_shop); c=itemView.findViewById(R.id.buy_content); cb=itemView.findViewById(R.id.good_cb); num=itemView.findViewById(R.id.good_num); } } private CallMoney callMoney; public void setCallMoney(CallMoney callMoney) { this.callMoney = callMoney; } public interface CallMoney{ void changeMoney(); }}Bean类,供参考,数据可以改变
接口数据(http://120.27.23.105/product/getCarts?uid=144):个人数据,有时候会不好使
数据请求的类package com.bwie.goodscar.utils;import java.io.IOException;import java.util.Map;import java.util.concurrent.TimeUnit;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;public class NetUtils { public static void getResult(String url, final CallResult callResult){// OkHttpClient client = SingleOk.getInstence()// .connectTimeout(10, TimeUnit.SECONDS)// .readTimeout(10, TimeUnit.SECONDS)// .writeTimeout(10, TimeUnit.SECONDS)// .retryOnConnectionFailure(false)// .build(); OkHttpClient client =new OkHttpClient.Builder().build(); FormBody.Builder build=new FormBody.Builder(); RequestBody body=build.build(); Request request=new Request.Builder().post(body).url(url).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { if(callResult!=null){ callResult.onFailure(call,e); } } @Override public void onResponse(Call call, Response response) throws IOException { if(callResult!=null) { callResult.onResponse(call, response); } } }); } public interface CallResult{ void onFailure(Call call, IOException e); void onResponse(Call call, Response response); }}
阅读全文
1 0
- RecyclerView实现购物车
- 购物车Recyclerview实现
- RecyclerView实现购物车
- Recyclerview嵌套Recyclerview实现简单购物车
- RecyclerView 实现购物车功能
- 使用RecyclerView实现购物车
- 使用RecyclerView+OkHttp实现购物车
- Android-RecyclerView实现购物车简单功能
- Android-RecyclerView实现购物车简单功能
- 购物车Recyclerview
- 用RecyclerView多布局实现购物车+随便逛一逛
- RecyclerView实现购物车的全选、反选功能
- Android-RecyclerView--实现一级购物车简单功能
- Android 双RecyclerView嵌套实现购物车逻辑
- Android 实现RecyclerView嵌套RecyclerView 实现购物车的全选 反选 单选 商家全选
- 换种思路实现RecyclerView嵌套RecyclerView(购物车)复杂效果
- RecyclerView 购物车 二级列表
- OkHttp+RecyclerView购物车(二)
- 加密解密工具类
- Spring中IoC和AOP的理解
- css3表头固定,并自由拖拽列宽
- LSTM Networks
- 【队内胡策 10.24 T3】洛圣都
- 购物车Recyclerview实现
- 导航条居中显示
- TCP/IP第三层--网络层
- Excel备忘
- vuex官方文档解读
- 367. Valid Perfect Square
- windows server 2008安装Oracle 11g r2先决条件检查失败,提示oracle 交换空间不足的解决方法
- Recyclevire的基本使用
- hexo多终端管理