本文实例讲述了AndroID实现的仿淘宝购物车。分享给大家供大家参考,具体如下:
夏的热情渐渐退去,秋如期而至,丰收的季节,小编继续着实习之路,走着走着,就走到了购物车,逛过淘宝或者是京东的小伙伴都知道购物车里面的宝贝可不止一件,对于爱购物的姑娘来说,购物车里面的商品恐怕是爆满,添加不进去了,以前逛淘宝的时候,小编没有想过要怎么样实现购物车,就知道在哪儿一个劲儿的逛,但是现在不一样了,小编做为一个开发者,想的就是该如何实现,捣鼓了两天的时间,用ListvIEw来实现,已经有模有样了,现在小编就来简单的总结一下实现购物车的心路历程,帮助有需要的小伙伴,欢迎小伙伴们留言交流。
首先,小编简单的介绍一下ListvIEw,ListVIEw 控件可使用四种不同视图显示项目。通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。 可使用 ListVIEw 控件将称作 ListItem 对象的列表条目组织成下列四种不同的视图之一:1.大(标准)图标2.小图标3.列表4.报表 VIEw 属性决定在列表中控件使用何种视图显示项目。还可用 LabelWrap 属性控制列表中与项目关联的标签是否可换行显示。另外,还可管理列表中项目的排序方法和选定项目的外观。今天小编主要和小伙伴们分享一下,如何使用ListvIEw实现购物的功能。做过AndroID的小伙伴都知道一个xml对应一个java类,但是购物车有点不一样,因为她里面的商品有可能不只一件,所以我们需要有两个xml,两个java类,相对应的还需要一个适配器adapter,一个model,下面小编来详细的介绍一下实现购物车的过程。
第一步,写model层,类似我们之前写过的实体层,具体代码如下所示:
/*** * 说明:购物车的相关信息 * 作者:丁国华 * 时间:2015年8月10日 09:41:18 */package jczb.shoPing.model;import java.io.Serializable;import java.util.ArrayList;import java.util.List;import androID.R.string;public class shopPingCart implements Serializable { private String proimg; private String Proname; private String shopPrice; private String markPrice; private String proCount; public String getProimg() { return proimg; } public voID setProimg(String proimg) { this.proimg = proimg; } public String getProname() { return Proname; } public voID setProname(String proname) { Proname = proname; } public String getShopPrice() { return shopPrice; } public voID setShopPrice(String shopPrice) { this.shopPrice = shopPrice; } public String getMarkPrice() { return markPrice; } public voID setMarkPrice(String markPrice) { this.markPrice = markPrice; } public String getProCount() { return proCount; } public voID setProCount(String proCount) { this.proCount = proCount; }}
第二步,我们编写xml里面的文件,需要编写两个xml文件,首先我们来编写activity_shopPingcart.xml的文件,代码如下所示:
<?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" > <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="50dp" androID:background="#438FCB" androID:orIEntation="horizontal"> <!-- 尖括号的布局 --> <ImageVIEw androID:layout_wIDth="0dp" androID:layout_height="match_parent" androID:layout_weight="1" androID:padding="8dp" androID:src="@drawable/tb_icon_actionbar_back" /> <!-- 购物车的布局 --> <TextVIEw androID:layout_wIDth="0dp" androID:layout_height="match_parent" androID:layout_weight="5.49" androID:gravity="center" androID:text="购物车" androID:textcolor="#FFFFFF" androID:textSize="20sp"/> <!-- 编辑的布局 --> <TextVIEw androID:layout_wIDth="0dp" androID:layout_height="match_parent" androID:layout_weight="3.18" androID:gravity="center" androID:text="编辑" androID:textcolor="#FFFFFF" androID:textSize="20sp" /> </linearLayout> <!-- ListvIEw,购物车里面的东西有可能比较多,需要用ListvIEw来进行显示 --> <linearLayout androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_weight="1" androID:orIEntation="vertical" androID:layout_margintop="0dp"> <ListVIEw androID:ID="@+ID/cart_shopPing_ListvIEw" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:divIDer="#808080" androID:divIDerHeight="0.5dp"> </ListVIEw> </linearLayout> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="50dp" androID:layout_alignParentBottom="true" androID:orIEntation="horizontal"> <!-- 全选的布局 --> <CheckBox androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_marginleft="10dp" androID:text="全选"/> <!-- 合计的布局 --> <TextVIEw androID:layout_wIDth="0dp" androID:layout_height="wrap_content" androID:layout_weight="1" androID:gravity="right" androID:paddingRight="10dp" androID:textcolor="#F63A19" androID:text="合计:¥88"/> <!-- 去结算的布局 --> <TextVIEw androID:ID="@+ID/jIEsuan_button" androID:layout_wIDth="80dp" androID:layout_height="wrap_content" androID:layout_marginRight="10dp" androID:background="@drawable/androID_login_color" androID:gravity="center" androID:padding="10dp" androID:text="结算"/> </linearLayout></linearLayout >
我们来看一下xml布局的效果,如下图所示:
接着我们来布局第二个xml,activity_shopPingcart_item.xml,代码如下所示:
<?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" > <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal"> <!-- 小对勾的布局 --> <CheckBox androID:ID="@+ID/pro_checkBox" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:focusable="false" androID:focusableIntouchMode="false" /> <!-- 图片布局 --> <ImageVIEw androID:ID="@+ID/pro_image" androID:layout_wIDth="80dp" androID:layout_height="80dp" androID:layout_margin="5dp" androID:scaleType="centerCrop" androID:src="@drawable/detail_show_1"/> <!-- 商品名称和价格的布局 --> <linearLayout androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:orIEntation="vertical"> <!-- 商品名称的布局 --> <TextVIEw androID:ID="@+ID/pro_name" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_margintop="10dp" androID:text="连衣裙女夏季" /> <!-- 价格的布局 --> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="33dp" androID:orIEntation="horizontal" > <TextVIEw androID:ID="@+ID/pro_shopPrice" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="bottom" androID:layout_margintop="10dp" androID:text="¥88" androID:textSize="16sp"/> <!-- <TextVIEw androID:ID="@+ID/pro_markPrice" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="bottom" androID:layout_margintop="10dp" androID:text="¥66" androID:textSize="16sp"/> --> </linearLayout> <linearLayout androID:layout_wIDth="150dp" androID:layout_height="33dp" androID:orIEntation="horizontal" > <!-- 加号 --> <button androID:ID="@+ID/pro_add" androID:layout_wIDth="wrap_content" androID:layout_height="34dp" androID:text="+" /> <TextVIEw androID:ID="@+ID/pro_count" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="bottom" androID:layout_margintop="10dp" androID:text="88" androID:textSize="13sp"/> <!-- 减号--> <button androID:ID="@+ID/pro_reduce" androID:layout_wIDth="wrap_content" androID:layout_height="34dp" androID:layout_marginRight="0dp" androID:text="-" /> </linearLayout> </linearLayout> </linearLayout></linearLayout>
布局效果如下所示:
第三步、我们来编写适配器adapter中的代码,即ShopPingCartAdapter,具体代码如下所示:
package jczb.shoPing.adapter;import java.util.List;import cn.jpush.androID.data.r;import jczb.shoPing.adapter.productslistadapter.VIEwHolder;import jczb.shoPing.adapter.productslistadapter.searchList;import jczb.shoPing.model.productSonSorting_cate;import jczb.shoPing.model.shopPingCart;import jczb.shoPing.model.sonSortigns;import jczb.shoPing.ui.R;import jczb.shoPing.ui.ShopPingCartActivity;import androID.content.Context;import androID.content.Intent;import androID.content.DialogInterface.OnClickListener;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.BaseAdapter;import androID.Widget.button;import androID.Widget.CheckBox;import androID.Widget.ImageVIEw;import androID.Widget.linearLayout;import androID.Widget.TextVIEw;public class ShopPingCartAdapter extends BaseAdapter { private Context mContext; private List<shopPingCart> mList; public ShopPingCartAdapter(Context mContext,List<shopPingCart> mList) { super(); this.mContext = mContext; this.mList = mList; } @OverrIDe public int getCount() { // Todo auto-generated method stub if (mList==null) { return 0; }else { return this.mList.size(); } } @OverrIDe public Object getItem(int position) { // Todo auto-generated method stub if (mList == null) { return null; } else { return this.mList.get(position); } } @OverrIDe public long getItemID(int position) { // Todo auto-generated method stub return position; } @OverrIDe public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { // Todo auto-generated method stub VIEwHolder holder = null; if (convertVIEw == null) { holder = new VIEwHolder(); convertVIEw = LayoutInflater.from(this.mContext).inflate(R.layout.activity_shopPingcart_item,null,true); holder.image=(ImageVIEw) convertVIEw.findVIEwByID(R.ID.pro_image); holder.chose=(CheckBox) convertVIEw.findVIEwByID(R.ID.pro_checkBox); holder.proname=(TextVIEw) convertVIEw.findVIEwByID(R.ID.pro_name); holder.proPrice=(TextVIEw)convertVIEw.findVIEwByID(R.ID.pro_shopPrice); holder.proCount=(TextVIEw) convertVIEw.findVIEwByID(R.ID.pro_count); convertVIEw.setTag(holder); } else { holder = (VIEwHolder) convertVIEw.getTag(); } if (this.mList != null) { shopPingCart shopPingList=this.mList.get(position); holder.proname.setText(shopPingList.getProname().toString()); holder.proPrice.setText(shopPingList.getShopPrice().toString()); holder.proCount.setText(shopPingList.getProCount().toString()); } return convertVIEw; } /*定义item对象*/ public class VIEwHolder { ImageVIEw image; TextVIEw proname; CheckBox chose; TextVIEw proPrice; TextVIEw proCount; }}
第四步,编写java类里面的代码,我们先来编写ShopPingCartItemActivity.java中的内容,具体代码如下所示:
package jczb.shoPing.ui;import androID.app.Activity;import androID.os.Bundle;public class ShopPingCartItemActivity extends Activity { protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_shopPingcart_item); }}
第五步,编写ShopPingCartActivity.java里面的内容,如下所示:
package jczb.shoPing.ui;import java.util.HashMap;import java.util.List;import java.util.Map;import jczb.shoPing.adapter.ShopPingCartAdapter;import jczb.shoPing.common.AgentAPI;import jczb.shoPing.model.shopPingCart;import jczb.shoPing.ui.SearchActivity.VIEwHolder;import jczb.shoPing.ui.ShopPingcartActivity2.myThread;import com.alibaba.fastJson.JsON;import androID.R.string;import androID.app.Activity;import androID.content.Intent;import androID.os.Bundle;import androID.os.Handler;import androID.os.Message;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.BaseAdapter;import androID.Widget.CheckBox;import androID.Widget.ImageVIEw;import androID.Widget.ListVIEw;import androID.Widget.TextVIEw;import androID.Widget.Toast;public class ShopPingCartActivity extends Activity{ TextVIEw jIEsuan,proname,shopPrice,proCount; ListVIEw aListVIEw; private LayoutInflater layoutInflater; private TextVIEw name; protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_shopPingcart); findVIEwByID(); /*开始线程*/ new Thread(new myThread()).start();{ } /*根据ID找到控件*/ public voID findVIEwByID(){ aListVIEw=(ListVIEw) findVIEwByID(R.ID.cart_shopPing_ListvIEw); } //开辟线程 public class myThread implements Runnable { public voID run() { Message msg = new Message(); try { Map<String,String> parmas = new HashMap<String,String>(); parmas.put("username","1"); parmas.put("password","2"); String url = "http://192.168.1.110:8080/SchoolShopJson/ShopPingCart.txt"; // 要发送的数据和访问的地址 String result = AgentAPI.dopost(parmas,url); // 如果返回的为空或者初始化时输入的ip地址无效(会返回下面的字符串),说明服务器连接失败! if (result == null) { // 使用-1代表服务器连接失败 msg.what = -1; } else { msg.what=1; msg.obj=result; } } catch (Exception e) { e.printstacktrace(); // 使用-1代表程序异常 msg.what = -2; msg.obj = e; } mHandler.sendMessage(msg); } } protected voID initVIEw() { // Todo auto-generated method stub } /*子线程-解析数据*/ private Handler mHandler = new Handler(){ public voID handleMessage(Message msg) { switch (msg.what) { case -1: Toast.makeText(ShopPingCartActivity.this,"服务器连接失败!",Toast.LENGTH_SHORT).show(); break; case -2: Toast.makeText(ShopPingCartActivity.this,"哎呀,出错啦...",Toast.LENGTH_SHORT).show(); break; case 1: String temp = (String)msg.obj; //将拿到的Json转换为数组 List<shopPingCart> ShopPingcartInfo = JsON.parseArray(temp,shopPingCart.class); ListVIEw.setAdapter(new ShopPingCartAdapter(ShopPingCartActivity.this,ShopPingcartInfo)); break; default: break; } } };}
我们来看一下运行的效果,如下所示:
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android编程之activity *** 作技巧总结》、《Android *** 作SQLite数据库技巧总结》、《Android *** 作json格式数据技巧总结》、《Android数据库 *** 作技巧总结》、《Android文件 *** 作技巧汇总》、《Android编程开发之SD卡 *** 作方法汇总》、《Android开发入门与进阶教程》、《Android资源 *** 作技巧汇总》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
总结以上是内存溢出为你收集整理的Android实现的仿淘宝购物车demo示例全部内容,希望文章能够帮你解决Android实现的仿淘宝购物车demo示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)