购物车 全选逻辑
来源:互联网 发布:java object to date 编辑:程序博客网 时间:2024/06/10 09:43
购物车 全选逻辑
思路
- 购物车的条目采用listview 展示
- listview 条目中 checkbox 控件,该控件默认为未选中 isChecked(false);
- listview外部点击全选按钮点击后,listview 内部数据如果是未选中状态改为选中状态;再次点击则全部变为 为选中状态
- listview 中checkbox 状态与 外部的全选 checkbox 的状态相同,则考虑 将 外部全选的状态赋予 listview checkbox 状态
- 更新完数据后,进行刷新
- 方式一
- adapter.notifyDataSetChanged();
- 方式二 重写设置适配器 ,适配器单独写,提升为全局变量,可以保证设置的适配器均为同一个引用
- listview.setAdapter(adapter);
- 方式一
注意事项
- 采用方式一 ,更新数据,有时数据已经刷新,但是界面没有更新,所有采用第二种方式更靠谱。
参考代码
代码一
`public class MainActivity extends Activity {
private ListView list_view;
private CheckAdapter checkAdapter;
private CheckBox allBox;
private Button reverse;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);list_view = (ListView)findViewById(R.id.list_view);allBox = (CheckBox)findViewById(R.id.all);reverse = (Button)findViewById(R.id.reverse);List<String> list = new ArrayList<String>();for (int i = 0; i < 15; i++) { list.add("这是条目" + i);}checkAdapter = new CheckAdapter(getApplicationContext(), list);list_view.setAdapter(checkAdapter);//设置全选allBox.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { boolean flag = allBox.isChecked(); for (int i = 0; i < checkAdapter.getSelect().size(); i++) { checkAdapter.getSelect().set(i, flag); } checkAdapter.notifyDataSetChanged(); }});//反选reverse.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (! checkAdapter.getSelect().contains(true)) { Toast.makeText(MainActivity.this, "qingxuanz", 0).show(); }else { for (int i = 0; i < checkAdapter.getSelect().size(); i++) { if (checkAdapter.getSelect().get(i)) { checkAdapter.getSelect().set(i, false); }else { checkAdapter.getSelect().set(i, true); } } if (checkAdapter.getSelect().contains(false)) { allBox.setChecked(false); } checkAdapter.notifyDataSetChanged(); } }});
}
private class CheckAdapter extends BaseAdapter {
private List list;
private Context context;//创建一个集合 去记录选中与未选中的状态 LinkedList<Boolean> linkedList = new LinkedList<Boolean>();public CheckAdapter(Context context, List<String> list) { // TODO Auto-generated constructor stub this.list = list; this.context = context; for (int i = 0; i < list.size(); i++) { linkedList.add(false); }}//对外提供一个方法 获取这个集合private List<Boolean> getSelect() { return linkedList;}@Overridepublic int getCount() { // TODO Auto-generated method stub return list.size();}@Overridepublic Object getItem(int position) { // TODO Auto-generated method stub return list.get(position);}@Overridepublic long getItemId(int position) { // TODO Auto-generated method stub return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); } CheckBox ck = (CheckBox) convertView.findViewById(R.id.ck); TextView tView = (TextView) convertView.findViewById(R.id.tv); tView.setText(list.get(position)); ck.setChecked(linkedList.get(position)); //对checkBox点击进行监听 ck.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //点中的时候改成相反的值 linkedList.set(position, ! linkedList.get(position)); //点击的同时还要去判断全选 if (linkedList.contains(false)) { allBox.setChecked(false); }else { allBox.setChecked(true); } notifyDataSetChanged(); } }); return convertView;}
}
}
`代码二
`
public class Fragment3_Shopping extends Fragment implements View.OnClickListener {private Activity mactivity;
private View view;
private ListView lv_shopping;
private MyDatabase mydb;
private List list;
private CheckBox cbox_shopping;
private ImageView iv_shoping;
private TextView tv_listitem_name;
private TextView tv_listitem_price;
private TextView tv_listitem_num;
private LinearLayout ll_listitem_pics;
private LinearLayout.LayoutParams params;
private String tag = “Fragment3_Shopping”;
private ShoppingAdapter adapter;
private CheckBox cbox_all;
private TextView tv_totalprice;
private TextView btn_account;@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_fragment3__shopping, container, false);
mactivity = getActivity();//获取数据库对象
mydb = new MyDatabase(mactivity);
return view;
}@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();//初始化控件
initData();//初始化数据
}private void initData() {
list = new ArrayList();
SQLiteDatabase db = mydb.getWritableDatabase();Cursor cursor = db.query("shopping", null, null, null, null, null, null);ShoppingBean shoppingBean = null;while (cursor.moveToNext()) { shoppingBean = new ShoppingBean(); shoppingBean.id = cursor.getInt(cursor.getColumnIndex("_id")); shoppingBean.goods_name = cursor.getString(cursor.getColumnIndex("goods_name")); shoppingBean.shop_price = cursor.getInt(cursor.getColumnIndex("shop_price")); shoppingBean.numShow = cursor.getInt(cursor.getColumnIndex("numShow")); shoppingBean.goodsimg = cursor.getString(cursor.getColumnIndex("goods_img")); shoppingBean.is_activity_goods = cursor.getString(cursor.getColumnIndex("is_activity_goods")); shoppingBean.is_allow_credit = cursor.getString(cursor.getColumnIndex("is_allow_credit")); shoppingBean.url = cursor.getString(cursor.getColumnIndex("url")); list.add(shoppingBean);}Log.e(tag, list.toString());adapter = new ShoppingAdapter(list);lv_shopping.setAdapter(adapter);
}
private void initView() {
lv_shopping = (ListView) view.findViewById(R.id.lv_shopping);
cbox_all = (CheckBox) view.findViewById(R.id.cbox_all_shopping);
tv_totalprice = (TextView) view.findViewById(R.id.tv_totalprice_shopping);
btn_account = (TextView) view.findViewById(R.id.btn_account_shopping);
cbox_all.setOnClickListener(this);
}@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cbox_all_shopping://全选,要么全true,要么全false
Log.i(“–”, “cbox_all—” + cbox_all.isChecked());
boolean flag = cbox_all.isChecked();for (int i = 0; i < adapter.getList().size(); i++) { adapter.getList().set(i, flag); } lv_shopping.setAdapter(adapter); //-----------------每次点击为0 tv_totalprice.setText("¥" + adapter.getTotalprice()); break; default: break;}
}
class ShoppingAdapter extends BaseAdapter {//设置适配器
List<ShoppingBean> list;private LinkedList<Boolean> linkedList = new LinkedList<Boolean>();public ShoppingAdapter(List<ShoppingBean> list) { this.list = list; for (int i = 0; i < list.size(); i++) { linkedList.add(false); }}private List<Boolean> getList() { return linkedList;}private double getTotalprice() { double totalprice = 0; for (int i = 0; i < linkedList.size(); i++) { ShoppingBean shoppingBean = list.get(i); if (linkedList.get(i)) { totalprice += shoppingBean.shop_price * shoppingBean.numShow; } } return totalprice;}@Overridepublic int getCount() { return list.size();}@Overridepublic Object getItem(int position) { return list.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(mactivity, R.layout.listitem_shopping, null); cbox_shopping = (CheckBox) convertView.findViewById(R.id.cbox_shopping); iv_shoping = (ImageView) convertView.findViewById(R.id.iv_shoping); tv_listitem_name = (TextView) convertView.findViewById(R.id.tv_listitem_name); tv_listitem_price = (TextView) convertView.findViewById(R.id.tv_listitem_price); tv_listitem_num = (TextView) convertView.findViewById(R.id.tv_listitem_num); ll_listitem_pics = (LinearLayout) convertView.findViewById(R.id.ll_listitem_pics); } //处理点击事件 判断如果外部选择,则 cbox_shopping.setChecked(linkedList.get(position)); ShoppingBean shoppingBean = list.get(position); BitmapUtils bit = new BitmapUtils(mactivity); bit.display(iv_shoping, shoppingBean.goodsimg);//商品图片 tv_listitem_name.setText(shoppingBean.goods_name);//商品名称 tv_listitem_price.setText("¥" + shoppingBean.shop_price); tv_listitem_num.setText("数量:" + shoppingBean.numShow); String is_allow_credit = shoppingBean.is_allow_credit; String is_activity_goods = shoppingBean.is_activity_goods; //--------------------- cbox_shopping.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { linkedList.set(position, !linkedList.get(position));//点击取反 //如果全选,则全选按钮选择 if (linkedList.contains(false)) { cbox_all.setChecked(false); } else { cbox_all.setChecked(true); } notifyDataSetChanged(); tv_totalprice.setText("¥" + getTotalprice()); } }); if (ll_listitem_pics.getChildCount() > 0) { ll_listitem_pics.removeAllViews(); } if (is_activity_goods.equals("0")) { ImageView img1 = new ImageView(mactivity); params = new LinearLayout.LayoutParams(20, 20); params.leftMargin = 10; img1.setLayoutParams(params); img1.setBackgroundResource(R.drawable.coupons); ll_listitem_pics.addView(img1); } if (is_allow_credit.equals("True")) { ImageView img1 = new ImageView(mactivity); params = new LinearLayout.LayoutParams(20, 20); params.leftMargin = 10; img1.setLayoutParams(params); img1.setBackgroundResource(R.drawable.pledge); ll_listitem_pics.addView(img1); } return convertView;}
}
}`
- 购物车 全选逻辑
- 购物车全选+单选+反选简单逻辑实现
- 购物车全选
- 购物车 全选 总价
- 购物车的简单逻辑实现之全选,反选,总价的改变
- angularJS--购物车实现全选/取消全选
- 购物车实现逻辑
- TP 购物车逻辑
- 购物车实现逻辑
- 购物车逻辑
- 购物车逻辑
- 购物车逻辑
- 购物车逻辑Angularjs
- 购物车简单逻辑
- 购物车简单逻辑
- 购物车逻辑
- 购物车逻辑
- 购物车逻辑
- Java Web显示图片验证码
- 课堂笔记(一)
- 访问单个节点的删除
- 手机数据恢复精灵教你快速找回误删除的手机通讯录
- FZU 2082 过路费(树链剖分+线段树)
- 购物车 全选逻辑
- LaTeX 工具使用介绍
- Dialog dismiss 流程
- 时间控件只显示年月
- JS基础第4课:prompt 消息对话框、打开新窗口(window.open
- <C++ Primer 5th 学习笔记>1
- sqlserver Job
- sturts2 POJO模式
- RxRetrofit 网络框架解析