欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Android培訓(xùn)之Android Studio實現(xiàn)簡單購物車功能及源碼

2018-07-12 14:15:09 1773瀏覽

今天扣丁學(xué)堂Android培訓(xùn)給大家分享了Android Studio實現(xiàn)簡單購物車功能及源碼,下面我們一起來看一下吧。


MainActivity的布局文件

  <LinearLayoutxmlns: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"
  android:orientation="vertical"
  tools:context=".MainActivity">
  <LinearLayout
  android:id="@+id/top_bar"
  android:layout_width="match_parent"
  android:layout_height="48dp"
  android:background="#E24146"
  android:orientation="vertical">
  <TextView
  android:id="@+id/title"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:minHeight="48dp"
  android:text="購物車"
  android:textColor="#ffffff"
  android:textSize="17sp"/>
  </LinearLayout>
  <ListView
  android:id="@+id/listview"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_weight="1"
  android:childIndicator="@null"
  android:groupIndicator="@null">
  </ListView>
  <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="50dp"
  android:orientation="horizontal">
  <LinearLayout
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_weight="2.5"
  android:gravity="center_vertical"
  android:orientation="horizontal">
  <CheckBox
  android:id="@+id/all_chekbox"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="10dp"
  android:layout_marginRight="4dp"
  android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  android:gravity="center"
  android:minHeight="64dp"
  android:paddingLeft="10dp"
  android:textAppearance="?android:attr/textAppearanceLarge"
  android:visibility="visible"/>
  <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginLeft="5dp"
  android:text="合計:"
  android:textSize="16sp"
  android:textStyle="bold"/>
  <TextView
  android:id="@+id/tv_total_price"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="¥0.00"
  android:textSize="16sp"
  android:textStyle="bold"/>
  </LinearLayout>
  <TextView
  android:id="@+id/tv_delete"
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_weight="1"
  android:clickable="true"
  android:background="#a29e9e"
  android:gravity="center"
  android:text="刪除"
  android:textColor="#FAFAFA"/>
  <TextView
  android:id="@+id/tv_go_to_pay"
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_weight="1"
  android:background="#E24146"
  android:clickable="true"
  android:gravity="center"
  android:text="付款(0)"
  android:textColor="#FAFAFA"/>
  </LinearLayout>
  </LinearLayout>

條目的布局文件

  <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <View
  android:layout_width="match_parent"
  android:layout_height="1dp"
  android:background="#CCCCCC"/>
  <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <CheckBox
  android:id="@+id/check_box"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="10dp"
  android:layout_marginRight="4dp"
  android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  android:gravity="center"
  android:minHeight="64dp"
  android:minWidth="32dp"
  android:textAppearance="?android:attr/textAppearanceLarge"
  android:visibility="visible"/>
  <ImageView
  android:id="@+id/iv_adapter_list_pic"
  android:layout_width="85dp"
  android:layout_height="85dp"
  android:layout_marginBottom="15dp"
  android:layout_marginTop="13dp"
  android:scaleType="centerCrop"
  android:src="@mipmap/ic_launcher"
  />
  <RelativeLayout
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_gravity="center_vertical"
  android:layout_marginTop="10dp"
  android:layout_marginLeft="13dp">
  <TextView
  android:id="@+id/tv_goods_name"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginRight="10dp"
  android:layout_marginTop="20dp"
  android:ellipsize="end"
  android:maxLines="2"
  android:text="商品"
  android:textSize="14sp"/>
  <RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_marginBottom="30dp"
  android:orientation="horizontal">
  <TextView
  android:id="@+id/tv_goods_price"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerVertical="true"
  android:singleLine="true"
  android:textSize="14sp"
  android:textStyle="bold"
  android:text="價格"/>
  <TextView
  android:id="@+id/tv_type_size"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerVertical="true"
  android:layout_marginLeft="10dp"
  android:layout_toRightOf="@+id/tv_goods_price"
  android:singleLine="true"
  android:textSize="10sp"/>
  <LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentRight="true"
  android:layout_centerVertical="true"
  android:layout_marginRight="15dp"
  android:orientation="horizontal">
  <TextView
  android:id="@+id/tv_reduce"
  android:layout_width="25dp"
  android:layout_height="25dp"
  android:gravity="center"
  android:background="#ccc"
  android:text="一"
  android:textSize="12sp"/>
  <TextView
  android:id="@+id/tv_num"
  android:layout_width="25dp"
  android:layout_height="25dp"
  android:gravity="center"
  android:singleLine="true"
  android:text="1"
  android:textSize="12sp"/>
  <TextView
  android:id="@+id/tv_add"
  android:layout_width="25dp"
  android:layout_height="25dp"
  android:gravity="center"
  android:text="十"
  android:background="#ccc"
  android:textSize="12sp"/>
  </LinearLayout>
  </RelativeLayout>
  </RelativeLayout>
  </LinearLayout>
  </LinearLayout>

CartAdapter適配器

  publicclassCaetAdapterextendsBaseAdapter{
  privateContextcontext;
  privateList<HashMap<String,String>>list;
  privateHashMap<String,Integer>pitchOnMap;
  publicHashMap<String,Integer>getPitchOnMap(){
  returnpitchOnMap;
  }
  publicvoidsetPitchOnMap(HashMap<String,Integer>pitchOnMap){
  this.pitchOnMap=pitchOnMap;
  }
  publicCaetAdapter(Contextcontext,List<HashMap<String,String>>list){
  this.context=context;
  this.list=list;
  pitchOnMap=newHashMap<>();
  for(inti=0;i<list.size();i++){
  pitchOnMap.put(list.get(i).get("id"),0);
  }
  }
  @Override
  publicintgetCount(){
  returnlist.size();
  }
  @Override
  publicObjectgetItem(intposition){
  returnlist.get(position);
  }
  @Override
  publiclonggetItemId(intposition){
  returnposition;
  }
  @Override
  publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
  convertView=View.inflate(context,R.layout.item_layout,null);
  finalCheckBoxcheckBox;
  ImageViewicon;
  finalTextViewname,price,num,type,reduce,add;
  checkBox=convertView.findViewById(R.id.check_box);
  icon=convertView.findViewById(R.id.iv_adapter_list_pic);
  name=convertView.findViewById(R.id.tv_goods_name);
  price=convertView.findViewById(R.id.tv_goods_price);
  type=convertView.findViewById(R.id.tv_type_size);
  num=convertView.findViewById(R.id.tv_num);
  reduce=convertView.findViewById(R.id.tv_reduce);
  add=convertView.findViewById(R.id.tv_add);
  name.setText(list.get(position).get("name"));
  price.setText("¥"+(Integer.valueOf(list.get(position).get("price")))*(Integer.valueOf(list.get(position).get("count"))));
  type.setText(list.get(position).get("type"));
  num.setText(list.get(position).get("count"));
  if(pitchOnMap.get(list.get(position).get("id"))==0){
  checkBox.setChecked(false);
  }else{
  checkBox.setChecked(true);
  }
  checkBox.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){
  @Override
  publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
  if(checkBox.isChecked()){
  pitchOnMap.put(list.get(position).get("id"),1);
  }else{
  pitchOnMap.put(list.get(position).get("id"),0);
  }
  mrefreshPriceInterface.refreshPrice(pitchOnMap);
  }
  });
  //商品數(shù)量減
  reduce.setOnClickListener(newView.OnClickListener(){
  @Override
  publicvoidonClick(Viewv){
  if(Integer.valueOf(list.get(position).get("count"))<=1){
  Toast.makeText(context,"數(shù)量不能再減啦,只能刪除!",Toast.LENGTH_SHORT).show();
  }else{
  list.get(position).put("count",(Integer.valueOf(list.get(position).get("count"))-1)+"");
  notifyDataSetChanged();
  }
  mrefreshPriceInterface.refreshPrice(pitchOnMap);
  }
  });
  //商品數(shù)量加
  add.setOnClickListener(newView.OnClickListener(){
  @Override
  publicvoidonClick(Viewv){
  list.get(position).put("count",(Integer.valueOf(list.get(position).get("count"))+1)+"");
  notifyDataSetChanged();
  mrefreshPriceInterface.refreshPrice(pitchOnMap);
  }
  });
  returnconvertView;
  }
  /**
  *創(chuàng)建接口
  */
  publicinterfaceRefreshPriceInterface{
  /**
  *把價格展示到總價上
  *@parampitchOnMap
  */
  voidrefreshPrice(HashMap<String,Integer>pitchOnMap);
  }
  /**
  *定義一個接口對象
  */
  privateRefreshPriceInterfacemrefreshPriceInterface;
  /**
  *向外部暴露一個方法
  *把價格展示到總價上
  *@paramrefreshPriceInterface
  */
  publicvoidsetRefreshPriceInterface(RefreshPriceInterfacerefreshPriceInterface){
  mrefreshPriceInterface=refreshPriceInterface;
  }
  }
  MainActivity
  publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListener,CaetAdapter.RefreshPriceInterface{
  privateLinearLayouttop_bar;
  privateListViewlistview;
  privateCheckBoxall_chekbox;
  privateTextViewprice;
  privateTextViewdelete;
  privateTextViewtv_go_to_pay;
  privateList<User>goodsList;
  privateUserDaouserDao;
  privateList<HashMap<String,String>>listmap=newArrayList<>();
  privateCaetAdapteradapter;
  privatedoubletotalPrice=0.00;
  privateinttotalCount=0;
  @Override
  protectedvoidonCreate(BundlesavedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initView();
  }
  privatevoidinitView(){
  top_bar=(LinearLayout)findViewById(R.id.top_bar);
  listview=(ListView)findViewById(R.id.listview);
  all_chekbox=(CheckBox)findViewById(R.id.all_chekbox);
  price=(TextView)findViewById(R.id.tv_total_price);
  delete=(TextView)findViewById(R.id.tv_delete);
  tv_go_to_pay=(TextView)findViewById(R.id.tv_go_to_pay);
  all_chekbox.setOnClickListener(this);
  delete.setOnClickListener(this);
  tv_go_to_pay.setOnClickListener(this);
  initDate();
  adapter=newCaetAdapter(MainActivity.this,listmap);
  listview.setAdapter(adapter);
  adapter.setRefreshPriceInterface(this);
  }
  @Override
  publicvoidonClick(Viewv){
  switch(v.getId()){
  caseR.id.all_chekbox:
  AllTheSelected();
  break;
  caseR.id.tv_delete:
  checkDelete(adapter.getPitchOnMap());
  break;
  caseR.id.tv_go_to_pay:
  if(totalCount<=0){
  Toast.makeText(this,"請選擇要付款的商品~",Toast.LENGTH_SHORT).show();
  }else{
  Toast.makeText(this,"付款成功",Toast.LENGTH_SHORT).show();
  }
  break;
  }
  }
  /**
  *數(shù)據(jù)
  */
  privatevoidinitDate(){
  //創(chuàng)建集合
  goodsList=newArrayList<>();
  //數(shù)據(jù)庫
  userDao=Myapplication.getInstances().getDaoSession().getUserDao();
  userDao.deleteAll();
  //數(shù)據(jù)源
  for(inti=0;i<10;i++){
  //向數(shù)據(jù)庫存放數(shù)據(jù)
  Useruser=newUser((long)i,
  "購物車里的第"+(i+1)+"件商品",
  (i+20)+"碼",
  "10",
  "10");
  userDao.insert(user);
  }
  //從數(shù)據(jù)庫中把數(shù)據(jù)放到集合中
  goodsList=userDao.loadAll();
  //把結(jié)合中的數(shù)據(jù)放到HashMap集合中
  for(inti=0;i<goodsList.size();i++){
  HashMap<String,String>map=newHashMap<>();
  map.put("id",goodsList.get(i).getId()+"");
  map.put("name",goodsList.get(i).getName());
  map.put("type",(goodsList.get(i).getType()));
  map.put("price",goodsList.get(i).getPrice()+"");
  map.put("count",goodsList.get(i).getCount()+"");
  listmap.add(map);
  }
  }
  @Override
  publicvoidrefreshPrice(HashMap<String,Integer>pitchOnMap){
  priceControl(pitchOnMap);
  }
  /**
  *控制價格展示總價
  */
  privatevoidpriceControl(Map<String,Integer>pitchOnMap){
  totalCount=0;
  totalPrice=0.00;
  for(inti=0;i<listmap.size();i++){
  if(pitchOnMap.get(listmap.get(i).get("id"))==1){
  totalCount=totalCount+Integer.valueOf(listmap.get(i).get("count"));
  doublegoodsPrice=Integer.valueOf(listmap.get(i).get("count"))*Double.valueOf(listmap.get(i).get("price"));
  totalPrice=totalPrice+goodsPrice;
  }
  }
  price.setText("¥"+totalPrice);
  tv_go_to_pay.setText("付款("+totalCount+")");
  }
  /**
  *刪除控制價格展示總價
  *@parammap
  */
  privatevoidcheckDelete(Map<String,Integer>map){
  List<HashMap<String,String>>waitDeleteList=newArrayList<>();
  Map<String,Integer>waitDeleteMap=newHashMap<>();
  for(inti=0;i<listmap.size();i++){
  if(map.get(listmap.get(i).get("id"))==1){
  waitDeleteList.add(listmap.get(i));
  waitDeleteMap.put(listmap.get(i).get("id"),map.get(listmap.get(i).get("id")));
  }
  }
  listmap.removeAll(waitDeleteList);
  map.remove(waitDeleteMap);
  priceControl(map);
  adapter.notifyDataSetChanged();
  }
  /**
  *全選或反選
  */
  privatevoidAllTheSelected(){
  HashMap<String,Integer>map=adapter.getPitchOnMap();
  booleanisCheck=false;
  booleanisUnCheck=false;
  Iteratoriter=map.entrySet().iterator();
  while(iter.hasNext()){
  Map.Entryentry=(Map.Entry)iter.next();
  if(Integer.valueOf(entry.getValue().toString())==1){
  isCheck=true;
  }else{
  isUnCheck=true;
  }
  }
  if(isCheck==true&&isUnCheck==false){//已經(jīng)全選,做反選
  for(inti=0;i<listmap.size();i++){
  map.put(listmap.get(i).get("id"),0);
  }
  all_chekbox.setChecked(false);
  }elseif(isCheck==true&&isUnCheck==true){//部分選擇,做全選
  for(inti=0;i<listmap.size();i++){
  map.put(listmap.get(i).get("id"),1);
  }
  all_chekbox.setChecked(true);
  }elseif(isCheck==false&&isUnCheck==true){//一個沒選,做全選
  for(inti=0;i<listmap.size();i++){
  map.put(listmap.get(i).get("id"),1);
  }
  all_chekbox.setChecked(true);
  }
  priceControl(map);
  adapter.setPitchOnMap(map);
  adapter.notifyDataSetChanged();
  }
  }

以上就是扣丁學(xué)堂Android培訓(xùn)之Android Studio實現(xiàn)簡單購物車功能及源碼的詳細介紹,希望本文的內(nèi)容對學(xué)習(xí)Android開發(fā)費有深入的了解,如果你想學(xué)習(xí)更多的Android知識,對Android有全面的了解,請關(guān)注扣丁學(xué)堂微信公眾號,或登錄扣丁學(xué)堂官網(wǎng)了解更多,還有大量Android視頻教程等著你來觀看。

扣丁學(xué)堂微信公眾號



【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“Android開發(fā)技術(shù)的相關(guān)資訊>>

標(biāo)簽:

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部