Android毕设项目功能:商城列表与购物车展示(一)
最近應公司要求,到某大學進行畢設項目實訓講解,今天在課上講解內容主要圍繞在商城功能展開,因為沒有服務器提供后臺數據,所以使用虛擬數據,在代碼中創建集合的用于展示。基本邏輯與后臺服務提供數據的邏輯也相似。畢設中有需要相同功能的同學可以借鑒一下,以下的邏輯思路與實現代碼。
代碼實現效果圖如下:
?需求分析:
在本篇博客中我首先會對于第一個頁面的基本邏輯進行重點分析,實現代碼進行具體展示。
查看效果圖會發現,日常用品的分類應該需要一個List集合進行存放,然后每一種用品有包括多個商品對象,可以創建一個類用于表示商品信息,也便于對其進行操作。故我們創建商品類。
package com.animee.day06.hw; /* 表示每一個用品對象*/ public class InfoBean {private String pic; //圖片地址private String title; //標題private String kind; //種類private int count; //庫存private double price; //價格private int buycount = 0; //購買數量public InfoBean() {}public InfoBean(String pic, String title, String kind, int count, double price, int buycount) {this.pic = pic;this.title = title;this.kind = kind;this.count = count;this.price = price;this.buycount = buycount;}public int getBuycount() {return buycount;}public void setBuycount(int buycount) {this.buycount = buycount;}public String getPic() {return pic;}public void setPic(String pic) {this.pic = pic;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getKind() {return kind;}public void setKind(String kind) {this.kind = kind;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public InfoBean(String pic, String title, String kind, int count, double price) {this.pic = pic;this.title = title;this.kind = kind;this.count = count;this.price = price;} }然后可以創建商品對象,存放到集合當中,同時每個種類對應一個集合,最后再將這些種類對應的集合統一存放到一個大集合中,因為需要寫本地的假數據,所以我創建一個數據類,便于管理,后面有對于購買多個商品的操作,故先創建一個表示購買商品清單的List集合。數據管理類如下:
package com.animee.day06.hw; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ContentDatas {public static List<String>dailyKindList= Arrays.asList(new String[]{"調料干貨","零食","飲料","煙酒","廚房用品","日用品","清潔用品","洗化用品"}); // 調料干貨集合public static List<InfoBean>dryList= Arrays.asList(new InfoBean[]{new InfoBean("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3703170131,3477248987&fm=26&gp=0.jpg","低鈉鹽","日常用品-調料干貨",100,14.00),new InfoBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558959593631&di=9e7d2c39a8fd129488ce2f716c9ef32c&imgtype=0&src=http%3A%2F%2Fcbu01.alicdn.com%2Fimg%2Fibank%2F2016%2F940%2F697%2F2869796049_1463791172.400x400.jpg","優質白砂糖","日常用品-調料干貨",350,16.50),new InfoBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558959626079&di=f028c38bfb88fa9404539fbe16caa7ef&imgtype=0&src=http%3A%2F%2Fm.360buyimg.com%2Fn12%2Fjfs%2Ft2488%2F176%2F440192277%2F97410%2F8dba406%2F560a1145Nf87adca4.jpg%2521q70.jpg","老姜紅糖","日常用品-調料干貨",350,24.50),new InfoBean("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=992868751,2684766887&fm=26&gp=0.jpg","太太樂雞精","日常用品-調料干貨",350,18.50),new InfoBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558959683844&di=d5512135524cb543455d12cb649d678a&imgtype=0&src=http%3A%2F%2Fimg1.ccjoin.com%2Fdata%2Ffiles%2Fstore_6986%2Fgoods_125%2F300x300_201409282055256595.jpg","金龍魚實用調和油","日常用品-調料干貨",350,41.00),new InfoBean("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1917815360,1188869590&fm=15&gp=0.jpg","福臨門實用調和油","日常用品-調料干貨",250,46.50),}); // 零食集合public static List<InfoBean>snackList=Arrays.asList(new InfoBean[]{new InfoBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558959888575&di=af51515d95139058b2b0905e4c944e3a&imgtype=0&src=http%3A%2F%2Fimage.lingshi.com%2Fimages%2F201103%2Fgoods_img%2F1590_P_1300418830835.JPG","旺旺維粒多","日常用品-零食",200,3.5),new InfoBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558959973239&di=903ae3d672b4990f28ab69094059188e&imgtype=0&src=http%3A%2F%2Fimage.lingshi.com%2Fnewimages%2F08%2F0808%2F08080294%2Fdetail%2Fb3_05.jpg","魷魚卷","日常用品-零食",200,14.3),new InfoBean("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1596631730,2568808696&fm=26&gp=0.jpg","樂事分享裝","日常用品-零食",200,22.9),new InfoBean("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2610589282,3946855278&fm=26&gp=0.jpg","旺旺大禮包","日常用品-零食",200,40.50),new InfoBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558960091815&di=e4e6f80cfdba1241e531e666c892500a&imgtype=0&src=http%3A%2F%2Fimg3m2.ddimg.cn%2F51%2F18%2F60627552-1_k_2.jpg","旺仔小饅頭","日常用品-零食",200,8.5),}); // 飲料集合public static List<InfoBean>drinkList=Arrays.asList(new InfoBean("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=4124022729,2885335270&fm=26&gp=0.jpg","景田飲用純凈水","日常用品-飲料",120,5.00),new InfoBean("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2097451215,799553454&fm=26&gp=0.jpg","可口可樂","日常用品-飲料",120,3.00),new InfoBean("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2553202182,1282878475&fm=26&gp=0.jpg","雪碧","日常用品-飲料",120,3.00)); // 煙酒集合public static List<InfoBean>smokeList = new ArrayList<>(); // 廚房用品集合public static List<InfoBean>kitchenList = new ArrayList<>(); // 日用品public static List<InfoBean>dayList = new ArrayList<>(); // 清潔用品public static List<InfoBean>cleanList = new ArrayList<>(); // 洗化用品public static List<InfoBean>washList = new ArrayList<>();public static List<List<InfoBean>> getAllList(){List<List<InfoBean>>allList= new ArrayList<>();allList.add(dryList);allList.add(snackList);allList.add(drinkList);allList.add(smokeList);allList.add(kitchenList);allList.add(dayList);allList.add(cleanList);allList.add(washList);return allList;} // 購買物品存放的集合public static List<InfoBean>buyList = new ArrayList<>(); }?在此類中,我只對于調料干貨,零食和飲料三種進行了商品添加,其他種類的列表內容為空,有需要的同學可以根據這三種添加方式進行其他種類商品添加。商品的圖片網址為我在百度圖片中搜索,右鍵獲取的圖片地址信息。
接下來完成第一個界面--日常用品分類界面的總布局繪制和列表中每一個Item的布局繪制。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#FF0000"><TextViewandroid:text="日常用品"android:textSize="22sp"android:textColor="#FFFFFF"android:padding="15dp"android:textStyle="bold"android:layout_centerInParent="true"android:layout_width="wrap_content"android:id="@+id/daily_title_tv"android:layout_height="wrap_content" /><ImageViewandroid:id="@+id/daily_back"android:layout_width="wrap_content"android:layout_height="30dp"android:src="@mipmap/icon_back"android:layout_centerVertical="true"android:layout_marginLeft="20dp"/></RelativeLayout><ListViewandroid:id="@+id/daily_lv"android:layout_width="match_parent"android:layout_height="match_parent"android:dividerHeight="1dp"android:divider="#DCDCDC"></ListView> </LinearLayout>ListView的item布局繪制如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:padding="20dp"android:layout_height="wrap_content"><TextViewandroid:id="@+id/item_daily_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="調料乾貨"android:layout_centerVertical="true"android:textSize="18sp" /><ImageViewandroid:layout_width="40dp"android:layout_height="30dp"android:src="@mipmap/icon_nt"android:layout_centerVertical="true"android:layout_alignParentRight="true"/> </RelativeLayout>寫完布局之后,編寫對應的界面的邏輯代碼,在activity當中。
package com.animee.day06.hw; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import com.animee.day06.R; import java.util.List; /* 日常用品*/ public class DailySuppliesActivity extends AppCompatActivity {ImageView backIv;ListView dailyLv;private ArrayAdapter<String> adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_daily_supplies); // 查找控件backIv = findViewById(R.id.daily_back);dailyLv = findViewById(R.id.daily_lv); // 獲取數據源List<String>mDatas = ContentDatas.dailyKindList; // 設置適配器adapter = new ArrayAdapter<>(this, R.layout.item_daily, R.id.item_daily_tv, mDatas);dailyLv.setAdapter(adapter); // 為ListView設定每一項的監聽事件的方法dailyLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Intent intent = new Intent(DailySuppliesActivity.this,DailyDetailActivity.class);intent.putExtra("pos",position);startActivity(intent);}});backIv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});} }因為在此界面的ListView當中每一個item可變化數據只有一個TextView,故可以使用ArrayAdapter對于此列表視圖進行數據填充操作。獲取之前數據管理類當中的分類集合,作為此ListView的數據源,點擊每個item可以跳轉到對應的商品分類界面,DailyDetailActivity為商品分類界面其邏輯操作在后面博客中會分析和實現。傳遞點擊的位置,可以便于DailyDetailActivity界面展示不同的商品信息列表。給返回按鈕以點擊事件,使其被選中后退出當前界面。
最后要記得activity需要在AndroidManifest.xml當中注冊信息,當然是用AndroidStudio直接選擇創建Activity,會幫助我們自動注冊,但也要檢查一下哦~
案例配套代碼下載地址:商城列表與購物車
總結
以上是生活随笔為你收集整理的Android毕设项目功能:商城列表与购物车展示(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像去雨(rainy streaks r
- 下一篇: Android 侧边栏快速索引(点击索引