UI展示效果图  点击底部checkbox时 可以全选listview上所有item的checkbox  亦可以更新数据  同时点击item上的checkbox时可以更新底部UI数据

由于代码保密性 只能展示这部分功能 还请各位攻城狮谅解

Adapter代码展示public class ShopCarAdapter extends AbsBaseAdapter<ProSendBean>   {private CartFragment mCartFragment;private List<ProSendBean> mData;private CallBack mcallBack;boolean ischecked=false;/*** 接收AbsListView要显示的数据** @param data 要显示的数据*/public ShopCarAdapter(List<ProSendBean> data) {super(data);}public ShopCarAdapter(CartFragment cartFragment, List<ProSendBean> data, CallBack callback) {super(data);mCartFragment = cartFragment;mData = data;mcallBack=callback;
//底部checkbox监听回调方法mCartFragment.setCheckBack(new CartFragment.CheckBack() {@Overridepublic void changeChecked(boolean checked) {ischecked=checked;ShopCarAdapter.this.notifyDataSetChanged();}});}@Overrideprotected BaseHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = View.inflate(parent.getContext(), R.layout.item_pro, null);ALog.i("kkkfffk");return new MyHolder(view);}public class MyHolder extends BaseHolder<ProSendBean> {@Bind(R.id.check)CheckBox check;@Bind(R.id.pic)ImageView pic;@Bind(R.id.proName)TextView proName;@Bind(R.id.size)TextView size;@Bind(R.id.color)TextView color;@Bind(R.id.edit)TextView edit;@Bind(R.id.jiage)TextView jiage;@Bind(R.id.xiaoji)TextView xiaoji;@Bind(R.id.shopcar_num)TextView shopcarNum;public MyHolder(View view) {super(context);}@Overrideprotected View initView() {View view = View.inflate(context, R.layout.item_pro, null);ButterKnife.bind(this, view);return view;}boolean checked;@Overridepublic void bindData(ProSendBean data, int position) {checked=false;checked=ischecked;check.setChecked(checked);proName.setText(data.name);shopcarNum.setText(data.prodNum+"");
//            singlepricejia.setText(data.price);jiage.setText("¥" + data.price + ".00");color.setText(data.color);size.setText(data.size);xiaoji.setText("¥" + data.price * data.prodNum + ".00");
//            pricetotalall.setText(data.prodNum * data.price);final String requestUrl = RBConstants.SERVER_URL + data.picurl;ALog.i("ddddddfffff" + requestUrl);//        Picasso.with(App.context).load(requestUrl).into(holder.pic);Glide.with(context).load(requestUrl).into(pic);data.position=position;data.prodNum=data.prodNum;check.setTag(data);check.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ProSendBean data = (ProSendBean) v.getTag();//点击切换checkbook的状态checked=!checked;data.ischecked=checked;v.setTag(data);mcallBack.onClick(v);
//                    Toast.makeText(App.context,data.name+data.price,Toast.LENGTH_SHORT).show();}});}}/**接口回调 监听复选框*/public interface CallBack {public void onClick(View v) ;}
}/*
public class ShopCarAdapter extends RecyclerView.Adapter<MyHolder> {private List<ProSendBean> mLists;public ShopCarAdapter(List<ProSendBean> lists) {mLists = lists;ALog.i(mLists.size()+"kkkk");}@Overridepublic MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = View.inflate(parent.getContext(), R.layout.item_pro, null);ALog.i("kkkfffk");return new MyHolder(view);}@Overridepublic void onBindViewHolder(MyHolder holder, int position) {final ProSendBean proSendBean = mLists.get(position);ALog.i(proSendBean.toString());holder.proName.setText(proSendBean.name);final String requestUrl = RBConstants.SERVER_URL + proSendBean.picurl;ALog.i("ddddddfffff"+requestUrl);//加载图片Glide.with(App.context).load(requestUrl).into(holder.pic);}@Overridepublic int getItemCount() {return mLists.size();}}class MyHolder extends RecyclerView.ViewHolder {@Bind(R.id.check)CheckBox check;@Bind(R.id.pic)ImageView pic;@Bind(R.id.proName)TextView proName;@Bind(R.id.num)TextView num;@Bind(R.id.size)TextView size;@Bind(R.id.color)TextView color;@Bind(R.id.price)TextView price;@Bind(R.id.pricetotal)TextView pricetotal;public MyHolder(View itemView) {super(itemView);ButterKnife.bind(this,itemView);}
}*/

/***&&&&&&&&&&&&&&&&&&&&*******/

主界面代码展示

public class CartFragment extends BaseFragment implements ShopCarAdapter.CallBack {@Bind(R.id.back)TextView back;@Bind(R.id.title)TextView title;@Bind(R.id.clear)TextView clear;@Bind(R.id.REListView)ListView REListView;@Bind(R.id.all_chekbox)CheckBox allChekbox;@Bind(R.id.tv_total_price)TextView tvTotalPrice;@Bind(R.id.tv_total_num)TextView tvTotalNum;@Bind(R.id.tv_total_score)TextView tvTotalScore;@Bind(R.id.tv_go_to_pay)TextView tvGoToPay;@Bind(R.id.backmain)Button backmain;@Bind(R.id.goshop)Button goshop;@Bind(R.id.ll_empty)LinearLayout llEmpty;@Bind(R.id.ll_data)LinearLayout llData;private ProductsBean mProductsBean;private ArrayList<ProSendBean> mLists;private boolean isCheck = false;private HttpParams mParams;private Map<String, String> mHeadrs;private String mUrl;@Overrideprotected int getLayoutId() {return R.layout.fragment_cart;}@Overrideprotected View initView() {ButterKnife.bind(this, mViewRoot);/**查找数据库是否存在数据*/refreshUI();Uri uri=Uri.parse("content://com.itheima.rbclient/proinfo") ;mActivity.getContentResolver().registerContentObserver(uri, true, new ContentObserver(new Handler()) {@Overridepublic void onChange(boolean selfChange) {Toast.makeText(getContext(),"数据有变化",Toast.LENGTH_SHORT).show();refreshUI();super.onChange(selfChange);}});
//使用recycleVIew展示UI效果
//        LinearLayoutManager layout=new LinearLayoutManager(mContext);
//
//        REListView.setLayoutManager(layout);return null;}private void refreshUI() {final Cursor cursor = App.mDBOUtils.queryAll("154636");if(cursor.moveToNext()){llEmpty.setVisibility(View.INVISIBLE);llData.setVisibility(View.VISIBLE);parseUrl(cursor);requestData();}else{llEmpty.setVisibility(View.VISIBLE);llData.setVisibility(View.INVISIBLE);}}
/**解析网址*/private void parseUrl(Cursor cursor) {mParams = new HttpParams();mHeadrs = new HashMap<>();mHeadrs.put("useid", "154636");StringBuilder sb=new StringBuilder();while (cursor.moveToNext()){final String userid = cursor.getString(1);final String productid = cursor.getString(2);final String prodNum = cursor.getString(3);final String proPropertyidcolor = cursor.getString(4);final String proPropertyidsize = cursor.getString(5);sb.append(productid).append(":").append(prodNum).append(":").append(proPropertyidcolor).append(",").append(proPropertyidsize).append("|");}mUrl = sb.toString();if(mUrl.endsWith("|")){mUrl.substring(0, mUrl.length()-2);}mParams.addHeader(mHeadrs);}@Overrideprotected void initData() {requestData();REListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//Toast.makeText(App.context, "被点击了" + mLists.get(position).name, Toast.LENGTH_SHORT).show();final ProSendBean proSendBean = mLists.get(position);Intent intent = new Intent(mActivity, ProductActivity.class);intent.putExtra("proSendBean", proSendBean);startActivity(intent);}});}private void requestData() {mParams = new HttpParams();mHeadrs = new HashMap<>();mHeadrs.put("useid", "154636");mParams.addHeader(mHeadrs);String url = RBConstants.SERVER_URL + "cart" + "?sku=" + mUrl;ALog.i(url);HttpLoader.getInstance(context).post(url, mParams, ProductsBean.class, 1, new HttpLoader.HttpListener() {@Overridepublic void onGetResponseSuccess(int requestCode, Object response) {mProductsBean = (ProductsBean) response;ALog.i("ddddd" + mProductsBean.toString());mLists = new ArrayList<>();final List<ProductsBean.CartBean> cart = mProductsBean.cart;for (ProductsBean.CartBean cartBean : cart) {ProSendBean mProSendBean = new ProSendBean();mProSendBean.productid = cartBean.product.id + "";mProSendBean.proPropertyidcolor = cartBean.product.productProperty.get(0).id;mProSendBean.proPropertyidsize = cartBean.product.productProperty.get(0).id;mProSendBean.prodNum = cartBean.prodNum;mProSendBean.price = cartBean.product.price;mProSendBean.name = cartBean.product.name;mProSendBean.color = cartBean.product.productProperty.get(0).v;mProSendBean.size = cartBean.product.productProperty.get(1).v;mProSendBean.picurl = cartBean.product.pic;mLists.add(mProSendBean);}if (mLists != null) {REListView.setAdapter(new ShopCarAdapter(CartFragment.this, mLists, CartFragment.this));}}@Overridepublic void onGetResponseError(int requestCode, VolleyError error) {Toast.makeText(App.context, "请求失败" + error, Toast.LENGTH_SHORT).show();}});}@Overridepublic void onDestroyView() {super.onDestroyView();ButterKnife.unbind(this);}ArrayList<ProSendBean> mProSendLists = new ArrayList<>();
//实现adapter中接口的方法@Overridepublic void onClick(View v) {ProSendBean data = (ProSendBean) v.getTag();if (data.ischecked) {mProSendLists.add(data);} else {if (mProSendLists.contains(data)) {mProSendLists.remove(data);}}reFreshPrice();}//更新合计UIprivate void reFreshPrice() {int prices = 0;int pronum = 0;int proscore = 0;if (mProSendLists != null && mProSendLists.size() > 0) {for (ProSendBean bean : mProSendLists) {prices += bean.price * bean.prodNum;pronum += bean.prodNum;proscore += bean.score * bean.prodNum;}}tvTotalPrice.setText("¥" + prices + ".00");tvTotalNum.setText(pronum + "");tvTotalScore.setText(prices + "积分");}CheckBack mCheckBack;public void setCheckBack(CheckBack checkBack) {mCheckBack = checkBack;}
//底部checkbox点击事件@OnClick(R.id.all_chekbox)public void onClick() {isCheck = !isCheck;if (isCheck) {mProSendLists = mLists;if (mCheckBack != null) {mCheckBack.changeChecked(true);}} else {mProSendLists = null;mProSendLists = new ArrayList<ProSendBean>();if (mCheckBack != null) {mCheckBack.changeChecked(false);}}reFreshPrice();}//定义外界checkbox的接口public interface CheckBack {public void changeChecked(boolean checked);}
}

对于listview条目item上checkbook点击监听回调更新listview外UI以及对listview外checkbook点击监听itemUI变化相关推荐

  1. 为ListView每个Item上面的按钮添加事件

    1.先看下效果图:        在这里仅供测试,我把数据都写死了,根据需要可以自己进行修改,此外实现ListView上面每个Item上的Button的事件有两种方法: 1.使用final变量扩展局部 ...

  2. ListView条目item中 添加按钮或者图片 弹出对话框

    UI布局 效果 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPEAAACPCAYAAAAr4z24AAAgAElE ...

  3. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

  4. 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点

    今天发现一个问题.listView的item点击以后进入到下一个页面,下个页面有个返回按钮,直接返回回去以后点击事件不能触发,滑动或者重新打开这个listView,就可以达到原来的效果.后来发现是因为 ...

  5. 实现listview条目点击显示和隐藏

    ##实现listview条目点击显示和隐藏 -主要修改适配器的getView方法 声明int类型 clickPosition //记录点击的条目position public int clickPos ...

  6. 在ListView中嵌套Switch开关,点击ListView条目来切换Switch的状态

    在ListView中添加Switch,让用户去点那个小小的开关的话体验不太好,通过点 击ListView的条目来改变Switch的开关状态. 目标效果 点击测试即可切换第一行的Swith的开关状态 需 ...

  7. android listview里item添加一个按钮点击事件,ListView Item点击事件跳转详情界面

    有好久都没有碰安卓了,考试加五一双组合也真是让人蛋疼.好在都平安的度过了,所以又有时间gun回来弄弄我的小博客(虽然没多少人看= =).看了之前做的几个小demo,模式都差不多,但是每次写的时候都要在 ...

  8. ListView条目中有CheckBox点击事件失效问题

    在listview的item中包含有textview和checkBox.我们既想获取listitem的点击事件,又想获取listitem中textview的点击事件和listitem中checkBox ...

  9. android 部分区域点击,Android编程实现ListView中item部分区域添加点击事件功能

    本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能.分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在 ...

  10. ListView的Item点击事件(消息传递)

    转载请保留原文出处"http://my.oschina.net/gluoyer/blog",谢谢! 您可以到博客的"友情链接"中,"程序猿媛(最新下载 ...

最新文章

  1. 如何判断CPU、内存、磁盘的性能瓶颈?
  2. javascript 六种数据类型
  3. python 六边形架构_通过纯css3代码实现六边形边框
  4. vue分页+spring boot +分页插件pagehelper
  5. MAT之GUI:GUI的方式创建/训练/仿真/预测神经网络
  6. UpdatePanel中用后台调用Javascript
  7. 现在电脑的主流配置_2019~2020电脑配置清单主流配件(下)
  8. 浅析物联网及云计算技术在传统汽车检测线中的应用
  9. java分页前端怎么实现_JavaWeb前端分页显示方法
  10. win2008虚拟化服务器配置,玩转Windows Server 2008自带的虚拟化功能
  11. qpython 3h下载_【分享】QPython 3H3.0.0 一个伟大的脚本编辑器!
  12. 关于Gradle的Instant Run
  13. linux sftp 命令_Linux Sftp命令示例
  14. jQuery方法解析(一)append
  15. 数字图像隐藏图像的两种算法及实现代码
  16. DTV_SI 汇总 兼谈LCN
  17. doom-emacs
  18. 一文搞懂Nginx限流(简单实现)
  19. AES解密,key长度不够16处理
  20. 做模具设计的,为什么那么多人要用UG

热门文章

  1. VBV大小-H.264
  2. adb之am、pm命令
  3. 英语的形容词变为of加名词形式的具体用法
  4. 计算机unity文献综述,Unity3D密室逃脱游戏设计+文献综述.doc
  5. xp计算机怎样看ip地址,XP电脑ip地址怎么查看?XP系统怎么样查看电脑的IP地址?...
  6. 实现B站弹幕很难么?这个开源项目了解一下
  7. matlab球面投影(二)
  8. Mybatis技术的使用一:逆向工程
  9. 2019年5月个人总结:大家都在跨界,原谅自己的懈怠
  10. 555 定时器的 3 种用法判断和解释