100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 对于listview条目item上checkbook点击监听回调更新listview外UI以及对listview外check

对于listview条目item上checkbook点击监听回调更新listview外UI以及对listview外check

时间:2021-07-29 10:07:19

相关推荐

对于listview条目item上checkbook点击监听回调更新listview外UI以及对listview外check

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变化

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。