中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Studio實現簡單購物車功能

發布時間:2020-08-30 17:23:56 來源:腳本之家 閱讀:1477 作者:攀巖嘉 欄目:移動開發

本文實例為大家分享了Android九宮格圖片展示的具體代碼,供大家參考,具體內容如下

MainActivity的布局文件

<LinearLayout 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"
  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>

條目的布局文件

<LinearLayout xmlns: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適配器

public class CaetAdapter extends BaseAdapter {

  private Context context;
  private List<HashMap<String, String>> list;
  private HashMap<String, Integer> pitchOnMap;

  public HashMap<String, Integer> getPitchOnMap() {
    return pitchOnMap;
  }

  public void setPitchOnMap(HashMap<String, Integer> pitchOnMap) {
    this.pitchOnMap = pitchOnMap;
  }

  public CaetAdapter(Context context, List<HashMap<String, String>> list) {
    this.context = context;
    this.list = list;

    pitchOnMap = new HashMap<>();
    for (int i = 0; i < list.size(); i++) {
      pitchOnMap.put(list.get(i).get("id"), 0);
    }
  }

  @Override
  public int getCount() {
    return list.size();
  }

  @Override
  public Object getItem(int position) {
    return list.get(position);
  }

  @Override
  public long getItemId(int position) {
    return position;
  }

  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    convertView = View.inflate(context, R.layout.item_layout, null);
    final CheckBox checkBox;
    ImageView icon;
    final TextView name, 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(new CompoundButton.OnCheckedChangeListener() {
      @Override
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(checkBox.isChecked()){
          pitchOnMap.put(list.get(position).get("id"),1);
        }else{
          pitchOnMap.put(list.get(position).get("id"), 0);
        }
        mrefreshPriceInterface.refreshPrice(pitchOnMap);
      }
    });

    //商品數量減
    reduce.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (Integer.valueOf(list.get(position).get("count")) <= 1) {
          Toast.makeText(context, "數量不能再減啦,只能刪除!", Toast.LENGTH_SHORT).show();
        } else {
          list.get(position).put("count", (Integer.valueOf(list.get(position).get("count")) - 1) + "");
          notifyDataSetChanged();
        }
        mrefreshPriceInterface.refreshPrice(pitchOnMap);
      }
    });
    //商品數量加
    add.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        list.get(position).put("count", (Integer.valueOf(list.get(position).get("count")) + 1) + "");
        notifyDataSetChanged();
        mrefreshPriceInterface.refreshPrice(pitchOnMap);

      }

    });

    return convertView;
  }

  /**
   * 創建接口
   */
  public interface RefreshPriceInterface {
    /**
     * 把價格展示到總價上
     * @param pitchOnMap
     */
    void refreshPrice(HashMap<String, Integer> pitchOnMap);
  }

  /**
   * 定義一個接口對象
   */
  private RefreshPriceInterface mrefreshPriceInterface;

  /**
   * 向外部暴露一個方法
   * 把價格展示到總價上
   * @param refreshPriceInterface
   */
  public void setRefreshPriceInterface(RefreshPriceInterface refreshPriceInterface) {
    mrefreshPriceInterface = refreshPriceInterface;
  }


}

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener,CaetAdapter.RefreshPriceInterface{

  private LinearLayout top_bar;
  private ListView listview;
  private CheckBox all_chekbox;
  private TextView price;
  private TextView delete;
  private TextView tv_go_to_pay;

  private List<User> goodsList;
  private UserDao userDao;
  private List<HashMap<String,String>> listmap=new ArrayList<>();
  private CaetAdapter adapter;

   private double totalPrice = 0.00;
  private int totalCount = 0;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
  }

  private void initView() {
    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 = new CaetAdapter(MainActivity.this, listmap);
    listview.setAdapter(adapter);
    adapter.setRefreshPriceInterface(this);
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.all_chekbox:
        AllTheSelected();
        break;
      case R.id.tv_delete:
        checkDelete(adapter.getPitchOnMap());
        break;
      case R.id.tv_go_to_pay:
        if(totalCount<=0){
          Toast.makeText(this,"請選擇要付款的商品~",Toast.LENGTH_SHORT).show();
        }else{
          Toast.makeText(this,"付款成功",Toast.LENGTH_SHORT).show();
        }
        break;
    }
  }
  /**
   * 數據
   */
  private void initDate() {
    //創建集合
    goodsList = new ArrayList<>();
    //數據庫
    userDao = Myapplication.getInstances().getDaoSession().getUserDao();
    userDao.deleteAll();
    //數據源
    for (int i = 0; i < 10; i++) {
      //向數據庫存放數據
      User user = new User((long) i,
          "購物車里的第" + (i + 1) + "件商品",
          (i + 20) + "碼",
          "10",
          "10");
      userDao.insert(user);
    }
    //從數據庫中把數據放到集合中
    goodsList=userDao.loadAll();
    //把結合中的數據放到HashMap集合中
    for(int i=0;i<goodsList.size();i++){
      HashMap<String,String> map=new HashMap<>();
      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
  public void refreshPrice(HashMap<String, Integer> pitchOnMap) {
    priceControl(pitchOnMap);
  }

  /**
   * 控制價格展示總價
   */
  private void priceControl(Map<String, Integer> pitchOnMap){
    totalCount = 0;
    totalPrice = 0.00;
    for(int i=0;i<listmap.size();i++){
      if(pitchOnMap.get(listmap.get(i).get("id"))==1){
        totalCount=totalCount+Integer.valueOf(listmap.get(i).get("count"));
        double goodsPrice=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+")");
  }

  /**
   * 刪除 控制價格展示總價
   * @param map
   */
  private void checkDelete(Map<String,Integer> map){
    List<HashMap<String,String>> waitDeleteList=new ArrayList<>();
    Map<String,Integer> waitDeleteMap =new HashMap<>();
    for(int i=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();
  }
  /**
   *全選或反選
   */
  private void AllTheSelected(){
    HashMap<String,Integer> map=adapter.getPitchOnMap();
    boolean isCheck=false;
    boolean isUnCheck=false;
    Iterator iter = map.entrySet().iterator();
    while (iter.hasNext()) {
      Map.Entry entry = (Map.Entry) iter.next();

      if(Integer.valueOf(entry.getValue().toString())==1){
        isCheck=true;
      }else{
        isUnCheck=true;
      }
    }
    if(isCheck==true&&isUnCheck==false){//已經全選,做反選
      for(int i=0;i<listmap.size();i++){
        map.put(listmap.get(i).get("id"),0);
      }
      all_chekbox.setChecked(false);
    }else if(isCheck==true && isUnCheck==true){//部分選擇,做全選
      for(int i=0;i<listmap.size();i++){
        map.put(listmap.get(i).get("id"),1);
      }
      all_chekbox.setChecked(true);
    }else if(isCheck==false && isUnCheck==true){//一個沒選,做全選
      for(int i=0;i<listmap.size();i++){
        map.put(listmap.get(i).get("id"),1);
      }
      all_chekbox.setChecked(true);
    }
    priceControl(map);
    adapter.setPitchOnMap(map);
    adapter.notifyDataSetChanged();
  }

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐业县| 大理市| 航空| 汨罗市| 鹿泉市| 乳源| 丹巴县| 威信县| 都江堰市| 麻栗坡县| 宾阳县| 寻乌县| 靖边县| 通辽市| 西昌市| 万荣县| 凤山市| 长岭县| 南乐县| 伊宁县| 永和县| 来安县| 临颍县| 梓潼县| 金沙县| 崇左市| 仲巴县| 青神县| 宣威市| 临武县| 兰考县| 秭归县| 宣城市| 江华| 丰都县| 德安县| 景谷| 西安市| 河曲县| 阳西县| 唐山市|