原文:http://blog.sina.com.cn/s/blog_6dc41baf0101625q.html
今天在公司做一个小项目:当前自己手机本地资源文件中购物车中有多少个商品类型的数量在界面提示,并且在用户添加一些商品到购物车之后更新购物车中的显示信息。如图类似的功能。实现的过程比较简单,主要看你怎么去想。之前我走的弯路不少。
首先是图片的处理,把一个小图片显示在购物车上,我之前的思路一直是想把这个图片放到按钮的边上,后来成功了,却遇到一个新的问题,怎么在上面添加数据了?后来换了一个思路:我直接就使用一个TextView把那个图片设置为背景图片,果然想要的效果达到了。
具体的布局文件如下:
<RelativeLayout android:layout_width="0dip" android:layout_height="wrap_content"android:layout_weight="1" > <Button android:id="@+id/shopping_cart"style="@style/wishlist_button" android:layout_width="fill_parent"android:layout_height="wrap_content" android:ellipsize="marquee"android:singleLine="true" android:text="@string/shopping_cart" > </Button> <TextView android:id="@+id/shopping_count" android:layout_width="15dip"android:layout_height="15dip" android:layout_alignParentTop="true"android:layout_marginLeft="33dip" android:background="@drawable/tab_unread_bg"android:gravity="center" android:textColor="#FFFFFF" android:textSize="10dip"android:textStyle="bold" /> </RelativeLayout>
在过程中越到一个问题就是:每当我点击主页的时候,购物车上面的数据总是回复最初始进入程序的数据:仔细看了一下代码,发现在整个项目中跳转之间只有MainAtivity.java是不会finish的,所以在主页面的时候购物车上的数据是不能更新的,我解决的办法是重写Onresume()方法,在里面添加更新数据的方法。修改如下
@Override protected void onResume() { //显示购物车的数据:为什么会在OnResume中写这个方法了, //(因为MainActivity是不会finish的页面上的数据不会跟新我们需要在它暂停之后更新购物车上的数字) shoppingIsHaveData(); super.onResume(); }
为了方便同样的方法的重复使用,我们把一些用的很多的方法写到了,BaseActivity中去,BaseAtivity是我们写的一个类集成Activity,以后我们使用的所有activity全部要继承BaseActivity,那么定义在BaseActivitY中的方法就可以使用了。下面是在BaseActivity中的判断购物车中是否有数据方法:
public void shoppingIsHaveData() { MyCardService mycardservice = new MyCardService(); ArrayList<MyCard> localeCartList = mycardservice.selectMenusList(this, "_id desc");
//自定义查询方法selectMenusList();
if (localeCartList.size() >= 1) { shopping_count = localeCartList.size() + ""; setShoppinCount(); } else { return; } }