diff --git a/代码/在这里3.0/bin/Shop.apk b/代码/在这里3.0/bin/Shop.apk index d0596b5..9e5c993 100644 Binary files a/代码/在这里3.0/bin/Shop.apk and b/代码/在这里3.0/bin/Shop.apk differ diff --git a/代码/在这里3.0/bin/classes.dex b/代码/在这里3.0/bin/classes.dex index 9071149..dd0f4e5 100644 Binary files a/代码/在这里3.0/bin/classes.dex and b/代码/在这里3.0/bin/classes.dex differ diff --git a/代码/在这里3.0/bin/classes/com/stone/date/MessageDef.class b/代码/在这里3.0/bin/classes/com/stone/date/MessageDef.class new file mode 100644 index 0000000..22f75d6 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/date/MessageDef.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/date/TypeDef.class b/代码/在这里3.0/bin/classes/com/stone/date/TypeDef.class new file mode 100644 index 0000000..78e9dd7 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/date/TypeDef.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/BuildConfig.class b/代码/在这里3.0/bin/classes/com/stone/shop/BuildConfig.class new file mode 100644 index 0000000..1387198 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/BuildConfig.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$anim.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$anim.class new file mode 100644 index 0000000..302d8ec Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$anim.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$attr.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$attr.class new file mode 100644 index 0000000..b1c0a95 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$attr.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$color.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$color.class new file mode 100644 index 0000000..a7855d8 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$color.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$dimen.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$dimen.class new file mode 100644 index 0000000..40366a7 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$dimen.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$drawable.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$drawable.class new file mode 100644 index 0000000..48b1ed7 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$drawable.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$id.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$id.class new file mode 100644 index 0000000..c77caab Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$id.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$layout.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$layout.class new file mode 100644 index 0000000..61f014a Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$layout.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$menu.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$menu.class new file mode 100644 index 0000000..9367bdb Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$menu.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$string.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$string.class new file mode 100644 index 0000000..6843a51 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$string.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R$style.class b/代码/在这里3.0/bin/classes/com/stone/shop/R$style.class new file mode 100644 index 0000000..addd23e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R$style.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/R.class b/代码/在这里3.0/bin/classes/com/stone/shop/R.class new file mode 100644 index 0000000..3fd6d56 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/R.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$1$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$1$1.class new file mode 100644 index 0000000..1cafd98 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$1$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$1.class new file mode 100644 index 0000000..a66066c Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$2$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$2$1.class new file mode 100644 index 0000000..cf5f465 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$2$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$2.class new file mode 100644 index 0000000..cd39a4c Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$3.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$3.class new file mode 100644 index 0000000..e84bdcb Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$3.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$ViewHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$ViewHolder.class new file mode 100644 index 0000000..78f9658 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter$ViewHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter.class new file mode 100644 index 0000000..84b2736 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/AIContentAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTListAdapter.class new file mode 100644 index 0000000..eeb8919 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTListAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTListAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..df02860 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTListAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,75 @@ +package com.stone.shop.adapter; + +import java.util.Iterator; +import java.util.List; + +import com.stone.shop.R; +import com.stone.shop.model.BXTNews; +import com.stone.shop.model.Good; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.TextView; + +/** + * 教学类-博学堂-讲座列表适配器 + * + * @date 2014-5-10 + * @author Stone + */ +public class BXTListAdapter extends BaseAdapter { + + private Context mContext; + private List mNewsList; // 商品列表信息 + private LayoutInflater mInflater = null; + + public BXTListAdapter(Context context, List newsList) { + mContext = context; + mNewsList = newsList; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mNewsList.size(); + } + + @Override + public Object getItem(int position) { + return mNewsList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + // 刷新列表中的数据 + public void refresh(List list) { + Log.i("BXTNewsAdapter", "Adapter刷新数据"); + mNewsList = list; + notifyDataSetChanged(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + BXTNewsHolder newsHolder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.bxt_list_item, null); + newsHolder = new BXTNewsHolder(); + newsHolder.tvBXTNewsTitle = (TextView) convertView + .findViewById(R.id.tv_bxt_news_item_title); + convertView.setTag(newsHolder); + } else { + newsHolder = (BXTNewsHolder) convertView.getTag(); + } + newsHolder.tvBXTNewsTitle.setText(mNewsList.get(position).getTitle()); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTNewsHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTNewsHolder.class new file mode 100644 index 0000000..e1ff9fa Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BXTNewsHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BaseContentAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BaseContentAdapter.class new file mode 100644 index 0000000..29a5087 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/BaseContentAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter$ViewHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter$ViewHolder.class new file mode 100644 index 0000000..f269e16 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter$ViewHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter.class new file mode 100644 index 0000000..c36e5a0 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..7deb441 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ClassroomAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,69 @@ +package com.stone.shop.adapter; + +import java.util.List; + +import com.stone.shop.R; +import com.stone.shop.model.Classroom; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +public class ClassroomAdapter extends BaseAdapter { + + private Context mContext; + private List mNewsList; // 商品列表信息 + private LayoutInflater mInflater = null; + + public ClassroomAdapter(Context context, List newsList) { + mContext = context; + mNewsList = newsList; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mNewsList.size(); + } + + @Override + public Object getItem(int position) { + return mNewsList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + // 刷新列表中的数据 + public void refresh(List list) { + mNewsList = list; + notifyDataSetChanged(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.gv_item_classroom, null); + viewHolder = new ViewHolder(); + viewHolder.tv_chooseText = (TextView) convertView.findViewById(R.id.tv_chooseText); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + viewHolder.tv_chooseText.setText(mNewsList.get(position).getName()); + return convertView; + } + + class ViewHolder { + + public TextView tv_chooseText; // 博学堂讲座标题 + + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/CommentAdapter$ViewHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/CommentAdapter$ViewHolder.class new file mode 100644 index 0000000..98125e5 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/CommentAdapter$ViewHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/CommentAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/CommentAdapter.class new file mode 100644 index 0000000..5981294 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/CommentAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsHolder.class new file mode 100644 index 0000000..e3bc779 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsListAdapter.class new file mode 100644 index 0000000..7e80c2e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsListAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsListAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..0befe9a --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GoodsListAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,70 @@ +package com.stone.shop.adapter; + +import java.util.List; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.TextView; + +import com.stone.shop.R; +import com.stone.shop.model.Good; + +public class GoodsListAdapter extends BaseAdapter { + + private Context mContext; + private List mGoodsList; // 商品列表信息 + private LayoutInflater mInflater = null; + + public GoodsListAdapter(Context context, List goodsList) { + mContext = context; + mGoodsList = goodsList; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mGoodsList.size(); + } + + @Override + public Object getItem(int position) { + return mGoodsList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + // 刷新列表中的数据 + public void refresh(List list) { + mGoodsList = list; + notifyDataSetChanged(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + GoodsHolder goodHolder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.goods_list_item, null); + goodHolder = new GoodsHolder(); + goodHolder.tvName = (TextView) convertView + .findViewById(R.id.tv_good_name); + goodHolder.tvPrice = (TextView) convertView + .findViewById(R.id.tv_good_price); + goodHolder.btnBuyGood = (TextView) convertView + .findViewById(R.id.btn_buy_good); + convertView.setTag(goodHolder); + } else { + goodHolder = (GoodsHolder) convertView.getTag(); + } + goodHolder.tvName.setText(mGoodsList.get(position).getName()); + goodHolder.tvPrice.setText("¥"+mGoodsList.get(position).getPrice()); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GridAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GridAdapter.class new file mode 100644 index 0000000..83f0134 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GridAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GridAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GridAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..7c6ed22 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/GridAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,114 @@ +package com.stone.shop.adapter; + +import android.R.integer; +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.stone.date.TypeDef; +import com.stone.shop.R; + +/** + * 生活-- 网格布局(ImageView+TextView)适配器 + * + * @date 2014-4-24 + * @author Stone + */ +public class GridAdapter extends BaseAdapter { + + private Context mContext; + private int mIndex = 0; // 代表当前需要适配页面中第几个GridView + + //学习小菜 + public static String[] mSchoolTexts = TypeDef.typeSonList1; + private int[] mSchoolImages = { R.drawable.ic_81, R.drawable.ic_82, R.drawable.ic_8 }; + + //吃饭小菜 + public static String[] mFoodTexts = TypeDef.typeSonList2; + private int[] mFoodImages = { R.drawable.ic_41, R.drawable.ic_42}; + + //购物小菜 + public static String[] mGiftTexts = TypeDef.typeSonList3; + private int[] mGiftImages = { R.drawable.ic_71, R.drawable.ic_72, + R.drawable.ic_73, R.drawable.ic_74, R.drawable.ic_75, + R.drawable.ic_76, R.drawable.ic_77}; + + //疯狂小菜 + public static String[] mOutTexts = TypeDef.typeSonList4; + private int[] mOutImages = { R.drawable.ic_3, R.drawable.ic_3, + R.drawable.ic_3, R.drawable.ic_3, R.drawable.ic_3, + R.drawable.ic_3, R.drawable.ic_3 }; + + public GridAdapter(Context context, int index) { + mContext = context; + mIndex = index; + } + + @Override + public int getCount() { + int count = 0; + switch (mIndex) { + case 0: + count = mFoodImages.length; + break; + case 1: + count = mGiftImages.length; + break; + case 2: + count = mOutImages.length; + break; + case 3: + count = mSchoolImages.length; + break; + default: + break; + } + return count; + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View view = View.inflate(mContext, R.layout.shop_grid_item, null); + // RelativeLayout rl = (RelativeLayout) + // view.findViewById(R.id.relaGrid); + + ImageView image = (ImageView) view.findViewById(R.id.img_chooseImage); + TextView text = (TextView) view.findViewById(R.id.tv_chooseText); + switch (mIndex) { + case 0: + image.setImageResource(mFoodImages[position]); + text.setText(mFoodTexts[position]); + break; + case 1: + image.setImageResource(mGiftImages[position]); + text.setText(mGiftTexts[position]); + break; + case 2: + image.setImageResource(mOutImages[position]); + text.setText(mOutTexts[position]); + break; + case 3: + image.setImageResource(mSchoolImages[position]); + text.setText(mSchoolTexts[position]); + break; + default: + break; + } + + return view; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ImagePagerAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ImagePagerAdapter.class new file mode 100644 index 0000000..2f908a5 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ImagePagerAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ImagePagerAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ImagePagerAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..c73ef5a --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ImagePagerAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,67 @@ +package com.stone.shop.adapter; + +import java.util.List; + +import android.content.Context; +import android.os.Parcelable; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.View; + +/** + * 首页--图片轮播AutoScrollViewPager适配器 + * @author Stone + */ +public class ImagePagerAdapter extends PagerAdapter { + + private List mImgViews; + + public ImagePagerAdapter(Context context, List imgViews) { + this.mImgViews = imgViews; + } + + @Override + public int getCount() { + if(mImgViews != null){ + return mImgViews.size(); + } + return 0; + } + + @Override + public Object instantiateItem(View arg0, int arg1) { + ((ViewPager) arg0).addView(mImgViews.get(arg1)); + return mImgViews.get(arg1); + } + + @Override + public void destroyItem(View arg0, int arg1, Object arg2) { + ((ViewPager) arg0).removeView(mImgViews.get(arg1)); + } + + @Override + public boolean isViewFromObject(View arg0, Object arg1) { + return arg0 == arg1; + } + + @Override + public void restoreState(Parcelable arg0, ClassLoader arg1) { + + } + + @Override + public Parcelable saveState() { + return null; + } + + @Override + public void startUpdate(View arg0) { + + } + + @Override + public void finishUpdate(View arg0) { + + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/InfoNewsListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/InfoNewsListAdapter.class new file mode 100644 index 0000000..735c1ce Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/InfoNewsListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/InformationListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/InformationListAdapter.class new file mode 100644 index 0000000..c072602 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/InformationListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineListAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineListAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..29a2f69 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineListAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,69 @@ +package com.stone.shop.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.stone.shop.R; + +/** + * MineActivity 项目列表适配器 + * @date 2014-5-10 + * @author Stone + */ +public class MineListAdapter extends BaseAdapter { + + private Context mContext; + private String[] mItemNames; // 项目列表名称 + private String[] mItemContents; //项目列表的备注值 + private int[] mItemImgIds; // 项目列表Icon + private LayoutInflater mInflater = null; + + public MineListAdapter(Context context, String[] names, String[] contents, int[] imgIds) { + mContext = context; + mItemNames = names; + mItemContents = contents; + mItemImgIds = imgIds; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mItemNames.length; + } + + @Override + public Object getItem(int position) { + return mItemNames[position]; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + MineListHolder holder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.mine_list_item, null); + holder = new MineListHolder(); + holder.imgItem = (ImageView) convertView.findViewById(R.id.img_item); + holder.tvItemName = (TextView) convertView + .findViewById(R.id.tv_item_name); + holder.tvItemContent = (TextView) convertView.findViewById(R.id.tv_item_content); + convertView.setTag(holder); + } else { + holder = (MineListHolder) convertView.getTag(); + } + holder.imgItem.setBackgroundResource(mItemImgIds[position]); + holder.tvItemName.setText(mItemNames[position]); + holder.tvItemContent.setText(mItemContents[position]); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineListHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineListHolder.class new file mode 100644 index 0000000..73eb151 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineListHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftAdapter.class new file mode 100644 index 0000000..70549f6 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..9dae107 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,65 @@ +package com.stone.shop.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.stone.shop.R; + +/** + * MineActivity 项目列表适配器 + * @date 2014-5-10 + * @author Stone + */ +public class MineSoftAdapter extends BaseAdapter { + + private Context mContext; + private String[] mItemNames; // 项目列表名称 + private String[] mItemContents; //项目列表的备注值 + private LayoutInflater mInflater = null; + + public MineSoftAdapter(Context context, String[] names, String[] contents) { + mContext = context; + mItemNames = names; + mItemContents = contents; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mItemNames.length; + } + + @Override + public Object getItem(int position) { + return mItemNames[position]; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + MineListHolder holder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.mine_soft_list_item, null); + holder = new MineListHolder(); + holder.tvItemName = (TextView) convertView + .findViewById(R.id.tv_item_name); + holder.tvItemContent = (TextView) convertView.findViewById(R.id.tv_item_content); + convertView.setTag(holder); + } else { + holder = (MineListHolder) convertView.getTag(); + } + holder.tvItemName.setText(mItemNames[position]); + holder.tvItemContent.setText(mItemContents[position]); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftHolder.class new file mode 100644 index 0000000..ab8cdff Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/MineSoftHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsHolder.class new file mode 100644 index 0000000..2e0aca3 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsListAdapter.class new file mode 100644 index 0000000..73a80f9 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsListAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsListAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..92264ca --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/NewsListAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,82 @@ +package com.stone.shop.adapter; + +import java.util.ArrayList; +import java.util.List; + +import com.stone.shop.R; +import com.stone.shop.model.News; + +import android.R.integer; +import android.content.Context; +import android.graphics.pdf.PdfDocument.Page; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +/** + * 新闻列表适配器 + * + * @date 2014-5-3 + * @author Stone + */ +public class NewsListAdapter extends BaseAdapter { + + private Context mContext; + private LayoutInflater mInflater = null; + private List mNewsList = null; // 所选分类下的所有店铺列表 + + public NewsListAdapter(Context context, List newsList) { + mContext = context; + mNewsList = newsList; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mNewsList.size(); + } + + @Override + public Object getItem(int position) { + return mNewsList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + // 刷新列表中的数据 + public void refresh(ArrayList list) { + mNewsList = list; + notifyDataSetChanged(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + NewsHolder newsHolder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.news_list_item, null); + newsHolder = new NewsHolder(); + newsHolder.tvNewsType = (TextView) convertView + .findViewById(R.id.tv_news_type); + newsHolder.tvNewsTitle = (TextView) convertView + .findViewById(R.id.tv_news_title); + newsHolder.tvNewsDate = (TextView) convertView + .findViewById(R.id.tv_news_date); + convertView.setTag(newsHolder); + } else { + newsHolder = (NewsHolder) convertView.getTag(); + } + //拆分字符串,只取年月日 + String[] ss = new String[2]; + ss = mNewsList.get(position).getCreatedAt().split(" "); + newsHolder.tvNewsType.setText(mNewsList.get(position).getType()); //新闻类型 + newsHolder.tvNewsTitle.setText(mNewsList.get(position).getTitle()); //新闻标题 + newsHolder.tvNewsDate.setText(ss[0]); //新闻发布日期 + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoHolder.class new file mode 100644 index 0000000..2202ce8 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoListAdapter.class new file mode 100644 index 0000000..7d01781 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoListAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoListAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..35c9294 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/OrderInfoListAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,88 @@ +package com.stone.shop.adapter; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.listener.GetListener; + +import com.stone.date.TypeDef; +import com.stone.shop.R; +import com.stone.shop.model.Good; +import com.stone.shop.model.Order; +import com.stone.shop.model.Shop; +import com.stone.shop.view.OrderInfoActivity; + +/** + * 适配器--适配订单列表中的数据 + * + * @date 2014-5-27 + * @author Stone + */ +public class OrderInfoListAdapter extends BaseAdapter { + + private Context mContext; + private LayoutInflater mInflater = null; + private List mOrderList = null; // 所选分类下的所有店铺列表 + private String mType; // 商店的分类 + + public OrderInfoListAdapter(Context context, List orderList) { + mContext = context; + mOrderList = orderList; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mOrderList.size(); + } + + @Override + public Object getItem(int position) { + return mOrderList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + public void refresh(List list) { + mOrderList = list; + notifyDataSetChanged(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + OrderInfoHolder orderInfoHolder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.order_info_list_item, null); + orderInfoHolder = new OrderInfoHolder(); + orderInfoHolder.tvOrderInfoGoodName = (TextView) convertView + .findViewById(R.id.tv_order_info_good_name); + orderInfoHolder.tvOrderInfoShopName = (TextView) convertView + .findViewById(R.id.tv_order_info_shop_name); + orderInfoHolder.tvOrderInfoPrice = (TextView) convertView + .findViewById(R.id.tv_order_info_price); + orderInfoHolder.tvOrderInfoState = (TextView) convertView + .findViewById(R.id.tv_order_info_state); + convertView.setTag(orderInfoHolder); + } else { + orderInfoHolder = (OrderInfoHolder) convertView.getTag(); + } + orderInfoHolder.tvOrderInfoGoodName.setText(mOrderList.get(position).getGoodName()); + orderInfoHolder.tvOrderInfoShopName.setText(mOrderList.get(position).getShopName()); + orderInfoHolder.tvOrderInfoPrice.setText("¥" + mOrderList.get(position).getPrice()); + orderInfoHolder.tvOrderInfoState.setText(mOrderList.get(position).getState()); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SComHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SComHolder.class new file mode 100644 index 0000000..1d74fb9 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SComHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SCommentAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SCommentAdapter.class new file mode 100644 index 0000000..3ec494e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SCommentAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SCommentAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SCommentAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..98cf470 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SCommentAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,66 @@ +package com.stone.shop.adapter; + +import java.util.List; + +import com.stone.shop.R; +import com.stone.shop.model.SComment; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +/** + * 店铺评论列表适配器 + * @date 2014-5-3 + * @author Stone + */ +public class SCommentAdapter extends BaseAdapter { + + private Context mContext; + private LayoutInflater mInflater = null; + private List mSComList = null; // 所选分类下的所有店铺列表 + + public SCommentAdapter(Context context, List list) { + mContext = context; + mSComList = list; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mSComList.size(); + } + + @Override + public Object getItem(int position) { + return mSComList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + SComHolder scomHolder; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.scom_list_item, null); + scomHolder = new SComHolder(); + scomHolder.tvComUser = (TextView) convertView + .findViewById(R.id.tv_commit_user); + scomHolder.tvComContent = (TextView) convertView + .findViewById(R.id.tv_commit_content); + convertView.setTag(scomHolder); + } else { + scomHolder = (SComHolder) convertView.getTag(); + } + scomHolder.tvComUser.setText(mSComList.get(position).getUserName()); + scomHolder.tvComContent.setText(mSComList.get(position).getContent()); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopHolder.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopHolder.class new file mode 100644 index 0000000..32685bc Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopHolder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopListAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopListAdapter.class new file mode 100644 index 0000000..5ae24ec Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopListAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopListAdapter.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopListAdapter.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..539a17f --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ShopListAdapter.java~remotes_origin_zhaozaichun @@ -0,0 +1,126 @@ +package com.stone.shop.adapter; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.stone.date.TypeDef; +import com.stone.shop.R; +import com.stone.shop.model.Shop; + +/** + * 适配器--适配某一分类下的店铺列表数据 + * + * @date 2014-4-29 + * @author Stone + */ +public class ShopListAdapter extends BaseAdapter { + + private Context mContext; + private LayoutInflater mInflater = null; + private ArrayList mShopList = null; // 所选分类下的所有店铺列表 + private String mType; // 商店的分类 + + public ShopListAdapter(Context context, ArrayList shopList, + String type) { + mContext = context; + mShopList = shopList; + mType = type; + mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return mShopList.size(); + } + + @Override + public Object getItem(int position) { + return mShopList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + // 刷新列表中的数据 + public void refresh(ArrayList list) { + mShopList = list; + //将数字的类型编号转换为文字 + exchangeType(mType); + notifyDataSetChanged(); + } + + /** + * 根据当前的type类型, 转换成相应的文字 + * @date 2014-4-29 + * @param typeString + */ + private void exchangeType(String typeString) { + + int type = Integer.parseInt(typeString); + int fatherType = type / 10; //父类型编号 + int sonType = type % 10; //子类型编号 + + Iterator iterator = mShopList.iterator(); + while (iterator.hasNext()) { + switch (fatherType) { + case 1: + iterator.next().setType( + TypeDef.typeDadList[fatherType-1] + "/" + + TypeDef.typeSonList1[sonType-1]); + break; + case 2: + iterator.next().setType( + TypeDef.typeDadList[fatherType-1] + "/" + + TypeDef.typeSonList2[sonType-1]); + break; + case 3: + iterator.next().setType( + TypeDef.typeDadList[fatherType-1] + "/" + + TypeDef.typeSonList3[sonType-1]); + break; + case 4: + iterator.next().setType( + TypeDef.typeDadList[fatherType-1] + "/" + + TypeDef.typeSonList4[sonType-1]); + break; + default: + break; + } + + } + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ShopHolder shopHodler; + if (convertView == null) { + convertView = mInflater.inflate(R.layout.shop_all_list_item, null); + shopHodler = new ShopHolder(); + shopHodler.tvShopName = (TextView) convertView + .findViewById(R.id.tv_shop_name); + shopHodler.tvShopType = (TextView) convertView + .findViewById(R.id.tv_shop_type); + shopHodler.tvShopLoc = (TextView) convertView + .findViewById(R.id.tv_shop_loc); + convertView.setTag(shopHodler); + } else { + shopHodler = (ShopHolder) convertView.getTag(); + } + shopHodler.tvShopName.setText(mShopList.get(position).getName()); + // 商店的类型需要单独处理 + shopHodler.tvShopType.setText(mShopList.get(position).getType()); + shopHodler.tvShopLoc.setText("二食堂"); + return convertView; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SmartFragmentStatePagerAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SmartFragmentStatePagerAdapter.class new file mode 100644 index 0000000..44c6d1b Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/SmartFragmentStatePagerAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ViewPagerAdapter.class b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ViewPagerAdapter.class new file mode 100644 index 0000000..99fa505 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/adapter/ViewPagerAdapter.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/BXTNews.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/BXTNews.class new file mode 100644 index 0000000..86cdc99 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/BXTNews.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/BXTNews.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/model/BXTNews.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..fb8f926 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/model/BXTNews.java~remotes_origin_zhaozaichun @@ -0,0 +1,78 @@ +package com.stone.shop.model; + +import cn.bmob.v3.BmobObject; + +/** + * 博学堂讲座实体类 + * @date 2014-5-10 + * @author Stone + */ +public class BXTNews extends BmobObject{ + + //private String id; + + private String title; //标题 + private String topic; //讲座主题 + private String speaker; //主 讲 人 + private String time; //讲座时间 + private String location; //讲座地点 + private String holder1; //主办单位 + private String holder2; //承办单位 + private String points; //主讲内容提要 + private String speakerinfo; //主讲人简介 + + public String getTitle() { + return title; + } + public String getTopic() { + return topic; + } + public String getSpeaker() { + return speaker; + } + public String getTime() { + return time; + } + public String getLocation() { + return location; + } + public String getHolder1() { + return holder1; + } + public String getHolder2() { + return holder2; + } + public String getPoints() { + return points; + } + public String getSpeakerinfo() { + return speakerinfo; + } + public void setTitle(String title) { + this.title = title; + } + public void setTopic(String topic) { + this.topic = topic; + } + public void setSpeaker(String speaker) { + this.speaker = speaker; + } + public void setTime(String time) { + this.time = time; + } + public void setLocation(String location) { + this.location = location; + } + public void setHolder1(String holder1) { + this.holder1 = holder1; + } + public void setHolder2(String holder2) { + this.holder2 = holder2; + } + public void setPoints(String points) { + this.points = points; + } + public void setSpeakerinfo(String speakerinfo) { + this.speakerinfo = speakerinfo; + } +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Classroom.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Classroom.class new file mode 100644 index 0000000..13f14cf Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Classroom.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Comment.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Comment.class new file mode 100644 index 0000000..6a2f679 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Comment.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Constant.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Constant.class new file mode 100644 index 0000000..122ae6a Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Constant.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Discuss.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Discuss.class new file mode 100644 index 0000000..de39937 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Discuss.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/FeedBack.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/FeedBack.class new file mode 100644 index 0000000..2e29dc3 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/FeedBack.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Good.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Good.class new file mode 100644 index 0000000..86d57b1 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Good.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Good.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/model/Good.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..b0a9ac8 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/model/Good.java~remotes_origin_zhaozaichun @@ -0,0 +1,63 @@ +package com.stone.shop.model; + +import java.io.Serializable; + +import cn.bmob.v3.BmobObject; +import cn.bmob.v3.datatype.BmobFile; + +/** + * 商品实体类 + * @date 2014-4-24 + * @author Stone + */ +public class Good extends BmobObject implements Serializable{ + + private static final long serialVersionUID = -3248168273019127389L; + + //private String id; 商品ID, 默认 + + private String shopID = ""; // 商店ID + private String shopName = ""; //商店名称 + private String type = ""; // 类型 + private String name = ""; // 名称 + private String price = ""; // 价格 + private BmobFile picGood = null; // 商品主图 + + public Good(String name, String price) { + this.name = name; + this.price = price; + } + + public String getShopID() { + return shopID; + } + + public void setShopID(String shopID) { + this.shopID = shopID; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPrice() { + return price; + } + + public void setPrice(String price) { + this.price = price; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Information.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Information.class new file mode 100644 index 0000000..52e7815 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Information.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Library.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Library.class new file mode 100644 index 0000000..c8b07ce Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Library.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/LuckyUser.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/LuckyUser.class new file mode 100644 index 0000000..15990c3 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/LuckyUser.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/News.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/News.class new file mode 100644 index 0000000..9ea95b1 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/News.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/News.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/model/News.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..b169779 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/model/News.java~remotes_origin_zhaozaichun @@ -0,0 +1,53 @@ +package com.stone.shop.model; + +import cn.bmob.v3.BmobObject; + +/** + * 首页校内新闻实体类 + * + * @date 2014-5-3 + * @author Stone + */ +public class News extends BmobObject { + + // private String id; + // private String time; + + private String type; // 新闻类型 + private String title; // 新闻标题 + private String author; // 新闻作者 + private String content; // 新闻内容 + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Order.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Order.class new file mode 100644 index 0000000..021c4be Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Order.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Reservation.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Reservation.class new file mode 100644 index 0000000..1db5f15 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Reservation.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/SComment.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/SComment.class new file mode 100644 index 0000000..9e86c65 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/SComment.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/SComment.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/model/SComment.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..7abf4ae --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/model/SComment.java~remotes_origin_zhaozaichun @@ -0,0 +1,61 @@ +package com.stone.shop.model; + +import cn.bmob.v3.BmobObject; + +/** + * 店铺评论实体类 + * @date 2014-5-3 + * @author Stone + */ +public class SComment extends BmobObject { + + // private String id; + // private String time; + + private String shopID; + private String shopName; + private String userID; + private String userName; + private String content; + + public String getShopID() { + return shopID; + } + + public void setShopID(String shopID) { + this.shopID = shopID; + } + + public String getShopName() { + return shopName; + } + + public void setShopName(String shopName) { + this.shopName = shopName; + } + + public String getUserID() { + return userID; + } + + public void setUserID(String userID) { + this.userID = userID; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Shop.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/Shop.class new file mode 100644 index 0000000..ece843d Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/Shop.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/Shop.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/model/Shop.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..5e22bde --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/model/Shop.java~remotes_origin_zhaozaichun @@ -0,0 +1,82 @@ +package com.stone.shop.model; + +import java.io.Serializable; + +import cn.bmob.v3.BmobObject; +import cn.bmob.v3.datatype.BmobFile; + +/** + * 店铺实体类, 实现序列化, Activity之间实现传递 + * @date 2014-4-24 + * @author Stone + */ +public class Shop extends BmobObject implements Serializable{ + + private static final long serialVersionUID = -8796635595320697255L; + + private String userID; // 主人 + private String type; // 类型(11代表第一个GridView中的第一个) + private String name; // 店名 + private String location; // 地理位置 + private String phone; // 联系电话 + private String info; // 简介 + private String sale; // 促销信息 + private BmobFile picShop; // 商店主图 + + public String getUserID() { + return userID; + } + + public void setUserID(String userID) { + this.userID = userID; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getSale() { + return sale; + } + + public void setSale(String sale) { + this.sale = sale; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/User.class b/代码/在这里3.0/bin/classes/com/stone/shop/model/User.class new file mode 100644 index 0000000..c140d66 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/model/User.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/model/User.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/model/User.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..511703e --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/model/User.java~remotes_origin_zhaozaichun @@ -0,0 +1,106 @@ +package com.stone.shop.model; + +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.datatype.BmobFile; +import cn.bmob.v3.datatype.BmobRelation; + +/** + * 用户实体类 + * @date 2014-4-24 + * @author Stone + */ +public class User extends BmobUser { + + public static String userId; + + // 父类中已经存在的属性 + // private String id; + // private String username; + // private String password; + // private String email; + // private String regTime; + + private String sex; // 性别 + private String phone; // 电话 + private String qq; // QQ + private String school = "湖北工业大学"; // 学校 + private String cademy; // 学院 + private String dorPart; // 校区 + private String dorNum; // 寝室号 + private String state = "未登陆"; // 登录状态 + private String type = "普通用户"; // 用户类型(普通用户、黑名单、中奖者) + //private BmobFile picUser; // 头像 + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getQQ() { + return qq; + } + + public void setQQ(String qq) { + this.qq = qq; + } + + public String getSchool() { + return school; + } + + public void setSchool(String school) { + this.school = school; + } + + public String getCademy() { + return cademy; + } + + public void setCademy(String cademy) { + this.cademy = cademy; + } + + public String getDorPart() { + return dorPart; + } + + public void setDorPart(String dorPart) { + this.dorPart = dorPart; + } + + public String getDorNum() { + return dorNum; + } + + public void setDorNum(String dorNum) { + this.dorNum = dorNum; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/AboutActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/AboutActivity.class new file mode 100644 index 0000000..a5ddd38 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/AboutActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$1.class new file mode 100644 index 0000000..5aaf2ac Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$2.class new file mode 100644 index 0000000..243feb0 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$3.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$3.class new file mode 100644 index 0000000..5a75215 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity$3.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity.class new file mode 100644 index 0000000..0a4638c Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/AwardActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity$1.class new file mode 100644 index 0000000..fa5b32f Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity.class new file mode 100644 index 0000000..496c8ec Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..b2fcb93 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,100 @@ +package com.stone.shop.view; + +import java.util.ArrayList; +import java.util.List; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.listener.FindListener; + +import com.stone.shop.R; +import com.stone.shop.adapter.BXTListAdapter; +import com.stone.shop.model.BXTNews; +import com.stone.shop.model.Classroom; +import com.stone.shop.model.BXTNews; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.renderscript.Element; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.ListView; +import android.widget.Toast; +/** + * 教学类-博学堂界面 + * @date 2014-5-10 + * @author Stone + */ +public class BXTActivity extends Activity implements OnItemClickListener{ + + private static final String TAG = "BXTActivity"; + + private ListView lvBXTNews; + private BXTListAdapter mBxtListAdapter; + private List mBXTNewsList; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_bxt); + + initView(); + initData(); + + } + + private void initView() { + lvBXTNews = (ListView) findViewById(R.id.lv_bxt_news); + mBXTNewsList = new ArrayList(); + mBxtListAdapter = new BXTListAdapter(this, mBXTNewsList); + lvBXTNews.setAdapter(mBxtListAdapter); + lvBXTNews.setOnItemClickListener(this); + } + + private void initData() { + BmobQuery query = new BmobQuery(); + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List newsList) { + //toast("查询商品成功, 共" + newsList.size()); + if(newsList.size()==0) + toast("亲, 暂时还木有讲座哦"); + else { + mBXTNewsList = newsList; + mBxtListAdapter.refresh(newsList); + mBxtListAdapter.notifyDataSetChanged(); + + } + + } + + @Override + public void onError(int arg0, String arg1) { + toast("查询失败"); + } + }); + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + Intent toBXTNewsActivity = new Intent(BXTActivity.this, BXTNewsActivity.class); + toBXTNewsActivity.putExtra("title", mBXTNewsList.get(position).getTitle()); + toBXTNewsActivity.putExtra("topic", mBXTNewsList.get(position).getTopic()); + toBXTNewsActivity.putExtra("speaker", mBXTNewsList.get(position).getSpeaker()); + toBXTNewsActivity.putExtra("time", mBXTNewsList.get(position).getTime()); + toBXTNewsActivity.putExtra("location", mBXTNewsList.get(position).getLocation()); + toBXTNewsActivity.putExtra("holder1", mBXTNewsList.get(position).getHolder1()); + toBXTNewsActivity.putExtra("holder2", mBXTNewsList.get(position).getHolder2()); + toBXTNewsActivity.putExtra("points", mBXTNewsList.get(position).getPoints()); + toBXTNewsActivity.putExtra("speakerinfo", mBXTNewsList.get(position).getSpeakerinfo()); + startActivity(toBXTNewsActivity); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTNewsActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTNewsActivity.class new file mode 100644 index 0000000..64079bd Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTNewsActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTNewsActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTNewsActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..a39c090 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/BXTNewsActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,65 @@ +package com.stone.shop.view; + +import com.stone.shop.R; +import com.stone.shop.model.BXTNews; + +import android.app.Activity; +import android.os.Bundle; +import android.widget.TextView; + +/** + * 教学类-博学堂-讲座详情界面 + * @date 2014-5-10 + * @author Stone + */ +public class BXTNewsActivity extends Activity { + + private static final String TAG = "BXTNewsActivity"; + + private BXTNews news; + private TextView tvBXTNewsTitle; + private TextView tvBXTNewsTopic; + private TextView tvBXTNewsSpeaker; + private TextView tvBXTNewsTime; + private TextView tvBXTNewsLoc; + private TextView tvBXTNewsHolder1; + private TextView tvBXTNewsHolder2; + private TextView tvBXTNewsPoints; + private TextView tvBXTNewsSpeakerInfo; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_bxt_news); + + initView(); + } + + private void initView() { + + tvBXTNewsTitle = (TextView) findViewById(R.id.tv_bxt_news_title); + tvBXTNewsTopic = (TextView) findViewById(R.id.tv_bxt_news_topic); + tvBXTNewsSpeaker = (TextView) findViewById(R.id.tv_bxt_news_speaker); + tvBXTNewsTime = (TextView) findViewById(R.id.tv_bxt_news_time); + tvBXTNewsLoc = (TextView) findViewById(R.id.tv_bxt_news_loc); + tvBXTNewsHolder1 = (TextView) findViewById(R.id.tv_bxt_news_holder1); + tvBXTNewsHolder2 = (TextView) findViewById(R.id.tv_bxt_news_holder2); + tvBXTNewsPoints = (TextView) findViewById(R.id.tv_bxt_news_point); + tvBXTNewsSpeakerInfo = (TextView) findViewById(R.id.tv_bxt_news_speaker_info); + + tvBXTNewsTitle.setText(getIntent().getStringExtra("title")); + tvBXTNewsTopic.setText(getIntent().getStringExtra("topic")); + tvBXTNewsSpeaker.setText(getIntent().getStringExtra("speaker")); + tvBXTNewsTime.setText(getIntent().getStringExtra("time")); + tvBXTNewsLoc.setText(getIntent().getStringExtra("location")); + tvBXTNewsHolder1.setText(getIntent().getStringExtra("holder1")); + tvBXTNewsHolder2.setText(getIntent().getStringExtra("holder2")); + tvBXTNewsPoints.setText(getIntent().getStringExtra("points")); + tvBXTNewsSpeakerInfo.setText(getIntent().getStringExtra("speakerinfo")); + + } + + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BaseActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/BaseActivity.class new file mode 100644 index 0000000..1c9f037 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/BaseActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/BaseActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/BaseActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..31a2a1d --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/BaseActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,104 @@ +package com.stone.shop.view; + +import cn.bmob.v3.Bmob; + +import com.stone.shop.R; +import com.stone.shop.view.old.OldMineActivity; + +import android.os.Bundle; +import android.app.TabActivity; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.Space; +import android.widget.TabHost; +import android.widget.TextView; +import android.widget.Toast; + +/** + * 应用主界面 + * @date 2014-4-24 + * @author Stone + */ +@SuppressWarnings("deprecation") +public class BaseActivity extends TabActivity { + + private static final String TAG = "BaseActivity"; + + private TabHost tabHost; + private LayoutInflater layoutInflater; + + + String[] mTitle = new String[] { "周边", "讨论区", "我的"}; + int[] mIcon = new int[] { R.drawable.ic_shop2, R.drawable.ic_sale2, + R.drawable.ic_car2, R.drawable.ic_mine }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_base); + + initTabView(); + + + } + + public View getTabItemView(int i) { + // TODO Auto-generated method stub + View view = layoutInflater.inflate(R.layout.tab_widget_item, null); + ImageView imageView = (ImageView) view.findViewById(R.id.imageview); + imageView.setImageResource(mIcon[i]); + TextView textView = (TextView) view.findViewById(R.id.textview); + textView.setText(mTitle[i]); + return view; + } + + public void initTabView() { + + /** + * tabHost.newTabSpec("artist")创建一个标签项,其中artist为它的标签标识符,相当于jsp页面标签的name属性 + * setIndicator("艺术标签",resources.getDrawable(R.drawable.ic_tab))设置标签显示文本以及标签上的图标(该图标并不是一个图片,而是一个xml文件哦) + * setContent(intent)为当前标签指定一个意图 + * tabHost.addTab(spec); 将标签项添加到标签中 + */ + + tabHost = getTabHost(); + layoutInflater = LayoutInflater.from(this); + TabHost.TabSpec spec; + + Intent intent1 = new Intent(this, ShopActivity.class); + spec = tabHost.newTabSpec(mTitle[0]).setIndicator( getTabItemView(0) ).setContent(intent1); + tabHost.addTab(spec); + + Intent intent2 = new Intent(this, AwardActivity.class); + spec = tabHost.newTabSpec(mTitle[1]).setIndicator( getTabItemView(1) ).setContent(intent2); + tabHost.addTab(spec); + + Intent intent3 = new Intent(this, MineActivity.class); + spec = tabHost.newTabSpec(mTitle[2]).setIndicator( getTabItemView(2) ).setContent(intent3); + tabHost.addTab(spec); + + /* + Intent intent3 = new Intent(this, WsqActivity.class); + spec = tabHost.newTabSpec(mTitle[2]).setIndicator( getTabItemView(2) ).setContent(intent3); + tabHost.addTab(spec); + + Intent intent4 = new Intent(this, OldMineActivity.class); + spec = tabHost.newTabSpec(mTitle[3]).setIndicator( getTabItemView(3) ).setContent(intent4); + tabHost.addTab(spec); */ + + tabHost.setCurrentTab(0); + } + + @Override + public void onBackPressed() { + Toast.makeText(this, "确定要退出在这里么?", Toast.LENGTH_LONG).show(); + //super.onBackPressed(); + } + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity$1.class new file mode 100644 index 0000000..a07cd1e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity.class new file mode 100644 index 0000000..5ff237e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..417200b --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/ClassroomActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,94 @@ +package com.stone.shop.view; + +import java.util.ArrayList; +import java.util.List; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.listener.FindListener; + +import com.stone.shop.R; +import com.stone.shop.adapter.BXTListAdapter; +import com.stone.shop.adapter.ClassroomAdapter; +import com.stone.shop.model.Classroom; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.GridView; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +public class ClassroomActivity extends Activity implements OnItemClickListener { + + private static final String TAG = "BXTActivity"; + + private GridView lvBXTNews; + private ClassroomAdapter mBxtListAdapter; + private List mBXTNewsList; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_classroom); + + initView(); + initData(); + + } + + private void initView() { + lvBXTNews = (GridView) findViewById(R.id.gv_classroom); + mBXTNewsList = new ArrayList(); + mBxtListAdapter = new ClassroomAdapter(this, mBXTNewsList); + lvBXTNews.setAdapter(mBxtListAdapter); + lvBXTNews.setOnItemClickListener(this); + + TextView tv_title = (TextView) findViewById(R.id.tv_title); + tv_title.setText("教室"); + } + + private void initData() { + BmobQuery query = new BmobQuery(); + query.addWhereEqualTo("type", "教室"); + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List newsList) { + // toast("查询商品成功, 共" + newsList.size()); + if (newsList.size() == 0) + toast("亲, 暂时还木有教室哦"); + else { + mBXTNewsList = newsList; + mBxtListAdapter.refresh(newsList); + mBxtListAdapter.notifyDataSetChanged(); + + } + + } + + @Override + public void onError(int arg0, String arg1) { + toast("查询失败"); + } + }); + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Intent intent = new Intent(ClassroomActivity.this, ReservationActivity.class); + Classroom classroom = mBXTNewsList.get(position); + intent.putExtra("roomId", classroom.getObjectId()); + intent.putExtra("roomName", classroom.getName()); + startActivity(intent); + + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$1.class new file mode 100644 index 0000000..590cba9 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$2.class new file mode 100644 index 0000000..cac2455 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$3$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$3$1.class new file mode 100644 index 0000000..78736c3 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$3$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$3.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$3.class new file mode 100644 index 0000000..b686d6a Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$3.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$4.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$4.class new file mode 100644 index 0000000..e71b2a3 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$4.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$5.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$5.class new file mode 100644 index 0000000..0f87f42 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity$5.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity.class new file mode 100644 index 0000000..e8e00bf Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/CommentActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity$1.class new file mode 100644 index 0000000..904f663 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity$2.class new file mode 100644 index 0000000..20b01bd Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity.class new file mode 100644 index 0000000..37721d9 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/EditActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity$1.class new file mode 100644 index 0000000..2e468d6 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity.class new file mode 100644 index 0000000..cee70b1 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..af75344 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/FeedBackActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,103 @@ +package com.stone.shop.view; + +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.SaveListener; + +import com.stone.shop.R; +import com.stone.shop.model.FeedBack; +import com.stone.shop.model.User; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +/** + * 意见反馈界面 + * + * @date 2014-5-27 + * @author Stone + */ +public class FeedBackActivity extends Activity implements OnClickListener { + + private static final String TAG = "FeedBackActivity"; + + private EditText etContent; + private Button btnSubmit; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_feedback); + + initView(); + } + + private void initView() { + etContent = (EditText) findViewById(R.id.et_feedback_content); + btnSubmit = (Button) findViewById(R.id.btn_feedback_submit); + btnSubmit.setOnClickListener(this); + } + + /** + * 提交用户的反馈信息 + */ + private void submit() { + String content = etContent.getText().toString(); + if (content.equals("")) { + toast("亲,请先写点东西吧"); + } else { + BmobUser user = BmobUser.getCurrentUser(this); + FeedBack fb = new FeedBack(); + fb.setUsername(user.getUsername()); + fb.setEmail(user.getEmail()); + fb.setContent(content); + fb.save(this, new SaveListener() { + + @Override + public void onSuccess() { + // TODO Auto-generated method stub + toast("提交成功, 在这里会尽快回复"); + back(); + } + + @Override + public void onFailure(int arg0, String arg1) { + // TODO Auto-generated method stub + toast("提交失败"); + } + }); + + } + + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_feedback_submit: + submit(); + break; + + default: + break; + } + } + + private void back() { + finish(); + } + + public void clickFeedBack(View v) { + finish(); + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity$1.class new file mode 100644 index 0000000..47b49c2 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity.class new file mode 100644 index 0000000..f216cf9 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..ef4e9c5 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/HomeActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,195 @@ +package com.stone.shop.view; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.opengl.Visibility; +import android.os.Bundle; +import android.support.v4.view.ViewPager.OnPageChangeListener; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.FrameLayout; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.ImageView.ScaleType; +import android.widget.TextView; +import android.widget.Toast; + +import cn.bmob.v3.Bmob; +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.listener.FindListener; +import cn.bmob.v3.listener.GetServerTimeListener; + +import com.stone.date.TypeDef; +import com.stone.shop.R; +import com.stone.shop.adapter.ImagePagerAdapter; +import com.stone.shop.adapter.NewsListAdapter; +import com.stone.shop.model.News; +import com.stone.shop.model.Shop; +import com.stone.ui.AutoScrollViewPager; +import com.stone.ui.ListScrollView; + +/** + * 主界面 + * + * @date 2014-4-24 + * @author Stone + */ +public class HomeActivity extends Activity implements OnClickListener, + OnItemClickListener { + + private static final String TAG = "HomeActivity"; + + private ListScrollView listScrollView; + + // 校历 + private TextView tvWeek; // 周次和星期 + private TextView tvDay; // 年月日 + + // 图片轮播 + private FrameLayout flImageAds; + private AutoScrollViewPager viewPager; + private List mImgViews; + private ImageButton btnHideAds; + private int[] mImgResId = { R.drawable.ic_banner1, R.drawable.ic_banner1, + R.drawable.ic_banner1, R.drawable.ic_banner1 }; + + // 校园新闻 + private ListView lvNewsList; + private List newsList = new ArrayList(); + private NewsListAdapter newsListAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_home); + + // 解决ScrollView和ListView之间的冲突 + listScrollView = (ListScrollView) findViewById(R.id.listScrollView); + lvNewsList = (ListView) findViewById(R.id.lv_news); + listScrollView.setListView(lvNewsList); + + flImageAds = (FrameLayout) findViewById(R.id.fl_image_ads); + viewPager = (AutoScrollViewPager) findViewById(R.id.view_pager); + btnHideAds = (ImageButton) findViewById(R.id.btn_hide_ads); + + mImgViews = new ArrayList(); + for (int i = 0; i < mImgResId.length; i++) { + ImageView imageView = new ImageView(this); + imageView.setImageResource(mImgResId[i]); + imageView.setScaleType(ScaleType.CENTER_CROP); + mImgViews.add(imageView); + } + + btnHideAds.setOnClickListener(this); + + viewPager.setAdapter(new ImagePagerAdapter(this, mImgViews)); + viewPager.setInterval(3000); // 设置自动滚动的间隔时间,单位为毫秒 + viewPager.setDirection(AutoScrollViewPager.RIGHT); // 设置自动滚动的方向,默认向右 + viewPager.setCycle(true); // 是否自动循环轮播,默认为true + viewPager.setScrollDurationFactor(3); // 设置ViewPager滑动动画间隔时间的倍率,达到减慢动画或改变动画速度的效果 + viewPager.setStopScrollWhenTouch(true); // 当手指碰到ViewPager时是否停止自动滚动,默认为true + viewPager.setBorderAnimation(true); // 设置循环滚动时滑动到从边缘滚动到下一个是否需要动画,默认为true + viewPager + .setSlideBorderMode(AutoScrollViewPager.SLIDE_BORDER_MODE_NONE);// 滑动到第一个或最后一个Item的处理方式,支持没有任何操作、轮播以及传递到父View三种模式 + + viewPager.startAutoScroll(); + + // 校历 + tvWeek = (TextView) findViewById(R.id.tv_week); + tvDay = (TextView) findViewById(R.id.tv_day); + setTime(); + + // 新闻 + newsListAdapter = new NewsListAdapter(this, newsList); + lvNewsList.setAdapter(newsListAdapter); + lvNewsList.setOnItemClickListener(this); + + getNewsData(); + } + + /** + * 设置校历中日期的时间 + */ + public void setTime() { + Calendar calendar = Calendar.getInstance(); + String year = calendar.get(Calendar.YEAR)+""; + String month = calendar.get(Calendar.MONTH)+1+""; + String day = calendar.get(Calendar.DAY_OF_MONTH)+""; + String week = calendar.get(Calendar.WEEK_OF_YEAR)-9+""; + String dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)+""; + String chDayOfWeek = TypeDef.chDayOfWeek[Integer.parseInt(dayOfWeek)-1]; + toast(year+"-"+month+"-"+day+" "+" 第 "+week+" 周 "+" "+" 星期 "+chDayOfWeek); + tvWeek.setText(" 第 "+week+" 周 "+" "+" 星期 "+chDayOfWeek); + tvDay.setText(year+" 年 "+month+" 月 "+day+" 日"); + } + + /** + * 初始化新闻列表数据 + * @date 2014-5-3 + * @author Stone + */ + public void getNewsData() { + BmobQuery query = new BmobQuery(); + query.order("-updatedAt"); + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List object) { + newsList = object; + // 通知Adapter数据更新 + newsListAdapter.refresh((ArrayList) newsList); + newsListAdapter.notifyDataSetChanged(); + } + + @Override + public void onError(int arg0, String arg1) { + toast("对不起, 获取数据失败了"); + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + // start auto scroll when onResume + viewPager.startAutoScroll(); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_hide_ads: + flImageAds.setVisibility(View.GONE); + break; + + default: + break; + } + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + Intent toNewsDetail = new Intent(HomeActivity.this, NewsActivity.class); + toNewsDetail.putExtra("NewsTitle", newsList.get(position).getTitle()); + toNewsDetail.putExtra("NewsAuthor", newsList.get(position).getAuthor()); + toNewsDetail.putExtra("NewsTime", newsList.get(position).getCreatedAt()); + toNewsDetail.putExtra("NewsContent", newsList.get(position).getContent()); + startActivity(toNewsDetail); + } + + public void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/InfoContentActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/InfoContentActivity.class new file mode 100644 index 0000000..6b0f013 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/InfoContentActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/InfoNewsContentActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/InfoNewsContentActivity.class new file mode 100644 index 0000000..93c6c41 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/InfoNewsContentActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/InformationActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/InformationActivity$1.class new file mode 100644 index 0000000..4aa38a9 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/InformationActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/InformationActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/InformationActivity.class new file mode 100644 index 0000000..04055fb Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/InformationActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryActivity$1.class new file mode 100644 index 0000000..65dc203 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryActivity.class new file mode 100644 index 0000000..9275817 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$1.class new file mode 100644 index 0000000..fc7edb2 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2$1$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2$1$1.class new file mode 100644 index 0000000..3c9ec6d Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2$1$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2$1.class new file mode 100644 index 0000000..fa27442 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2.class new file mode 100644 index 0000000..efb8011 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity.class new file mode 100644 index 0000000..0cbe19e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LibraryReservationActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$1.class new file mode 100644 index 0000000..13c7193 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$2.class new file mode 100644 index 0000000..9cf2561 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$3.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$3.class new file mode 100644 index 0000000..9c65419 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$3.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$4$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$4$1.class new file mode 100644 index 0000000..2f40aa5 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$4$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$4.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$4.class new file mode 100644 index 0000000..c68d858 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$4.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$BaseUiListener.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$BaseUiListener.class new file mode 100644 index 0000000..035a1cb Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity$BaseUiListener.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity.class new file mode 100644 index 0000000..c61600f Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..5993407 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/LoginActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,346 @@ +package com.stone.shop.view; + +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import org.json.JSONException; +import org.json.JSONObject; + +import android.app.Activity; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; +import cn.bmob.v3.Bmob; +import cn.bmob.v3.listener.SaveListener; + +import com.stone.shop.R; +import com.stone.shop.model.User; +import com.stone.util.Util; +import com.tencent.connect.UserInfo; +import com.tencent.connect.auth.QQAuth; +import com.tencent.connect.common.Constants; +import com.tencent.tauth.IUiListener; +import com.tencent.tauth.Tencent; +import com.tencent.tauth.UiError; + +/** + * 登陆界面 + * + * @date 2014-4-24 + * @author Stone + */ +public class LoginActivity extends Activity implements OnClickListener { + + private static final String TAG = "LoginActicity"; + + private Button btnLogin; + private Button btnReg; + private EditText etUsername; + private EditText etPassword; + + private String username; + private String password; + + private static final String APP_ID = "222222"; + private UserInfo mInfo; + private TextView mUserInfo; + private ImageView mUserLogo; + private ImageView mNewLoginButton; + private TextView backInfo; + + // QQ登陆 + private static Tencent mTencent; + // private QQAuth mQQAuth; + + Handler mHandler = new Handler() { + + @Override + public void handleMessage(Message msg) { + if (msg.what == 0) { + JSONObject response = (JSONObject) msg.obj; + if (response.has("nickname")) { + try { + mUserInfo.setVisibility(android.view.View.VISIBLE); + mUserInfo.setText(response.getString("nickname")); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + } else if (msg.what == 1) { + Bitmap bitmap = (Bitmap) msg.obj; + mUserLogo.setImageBitmap(bitmap); + mUserLogo.setVisibility(android.view.View.VISIBLE); + } + } + + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // 初始化 Bmob SDK + // 使用时请将第二个参数Application ID替换成你在Bmob服务器端创建的Application ID + Bmob.initialize(this, "252a2c58d0dc9a78a5411501c62ce0de"); + setContentView(R.layout.activity_login); + + // QQ登陆, 获取实例 + // mQQAuth = QQAuth.createInstance(APP_ID, + // this.getApplicationContext()); + mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext()); + + btnLogin = (Button) findViewById(R.id.btn_login); + btnReg = (Button) findViewById(R.id.btn_register); + + etUsername = (EditText) findViewById(R.id.et_username); + etPassword = (EditText) findViewById(R.id.et_password); + + btnLogin.setOnClickListener(this); + btnReg.setOnClickListener(this); + + findViewById(R.id.btn_qq).setOnClickListener(this); + + mUserInfo = (TextView) findViewById(R.id.user_nickname); + mUserLogo = (ImageView) findViewById(R.id.user_logo); + mNewLoginButton = (ImageView) findViewById(R.id.new_login_btn); + mNewLoginButton.setOnClickListener(this); + backInfo = (TextView) findViewById(R.id.user_callback); + + getUserInfo(); + + } + + private void getUserInfo() { + SharedPreferences sp = getSharedPreferences("UserInfo", 0); + etUsername.setText(sp.getString("username", null)); + etPassword.setText(sp.getString("password", null)); + } + + // 保存用户的登陆记录 + private void saveUserInfo(String username, String password) { + SharedPreferences sp = getSharedPreferences("UserInfo", 0); + Editor editor = sp.edit(); + editor.putString("username", username); + editor.putString("password", password); + editor.commit(); + } + + public void onClickLogin() { + if (!mTencent.isSessionValid()) { + mTencent.login(this, "all", loginListener); + Log.d("SDKQQAgentPref", "FirstLaunch_SDK:" + SystemClock.elapsedRealtime()); + } else { + + mTencent.logout(this); + updateUserInfo(); + } + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + // 登陆 + case R.id.btn_login: + username = etUsername.getText().toString(); + password = etPassword.getText().toString(); + + if (!Util.isNetworkConnected(this)) { + toast("木有网络 ( ⊙ o ⊙ ) "); + } else if (username.equals("") || password.equals("")) { + toast("请输入账号和密码"); + break; + } else { + final User bu2 = new User(); + bu2.setUsername(username); + bu2.setPassword(password); + bu2.login(this, new SaveListener() { + + @Override + public void onSuccess() { + // TODO Auto-generated method stub + toast("欢迎进入 在这里 服务系统"); + // 保存用户信息 + saveUserInfo(username, password); + // 跳转到主页 + User.userId = bu2.getObjectId(); + Intent toHome = new Intent(LoginActivity.this, BaseActivity.class); + startActivity(toHome); + finish(); + } + + @Override + public void onFailure(int arg0, String arg1) { + // TODO Auto-generated method stub + toast("用户名或密码错误"); + } + }); + } + break; + + case R.id.btn_register: + Intent toReg = new Intent(LoginActivity.this, RegisterActivity.class); + startActivity(toReg); + break; + case R.id.btn_qq: + + onClickLogin(); + + break; + + default: + break; + + } + } + + public void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + IUiListener loginListener = new BaseUiListener() { + @Override + protected void doComplete(JSONObject values) { + Log.d("SDKQQAgentPref", "AuthorSwitch_SDK:" + SystemClock.elapsedRealtime()); + initOpenidAndToken(values); + updateUserInfo(); + } + }; + + private class BaseUiListener implements IUiListener { + + @Override + public void onComplete(Object response) { + if (null == response) { + Util.showResultDialog(LoginActivity.this, "返回为空", "登录失败"); + return; + } + JSONObject jsonResponse = (JSONObject) response; + if (null != jsonResponse && jsonResponse.length() == 0) { + Util.showResultDialog(LoginActivity.this, "返回为空", "登录失败"); + return; + } + // Util.showResultDialog(LoginActivity.this, response.toString(), + // "登录成功"); + doComplete((JSONObject) response); + try { + User.userId = jsonResponse.getString("openid"); + } catch (JSONException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + Intent toHome = new Intent(LoginActivity.this, BaseActivity.class); + startActivity(toHome); + finish(); + } + + protected void doComplete(JSONObject values) { + + } + + @Override + public void onError(UiError e) { + Util.toastMessage(LoginActivity.this, "onError: " + e.errorDetail); + Util.dismissDialog(); + } + + @Override + public void onCancel() { + Util.toastMessage(LoginActivity.this, "onCancel: "); + Util.dismissDialog(); + } + } + + private void updateUserInfo() { + if (mTencent != null && mTencent.isSessionValid()) { + IUiListener listener = new IUiListener() { + + @Override + public void onError(UiError e) { + + } + + @Override + public void onComplete(final Object response) { + Message msg = new Message(); + msg.obj = response; + msg.what = 0; + mHandler.sendMessage(msg); + new Thread() { + + @Override + public void run() { + JSONObject json = (JSONObject) response; + if (json.has("figureurl")) { + Bitmap bitmap = null; + try { + bitmap = Util.getbitmap(json.getString("figureurl_qq_2")); + } catch (JSONException e) { + + } + Message msg = new Message(); + msg.obj = bitmap; + msg.what = 1; + mHandler.sendMessage(msg); + } + } + + }.start(); + } + + @Override + public void onCancel() { + + } + }; + mInfo = new UserInfo(this, mTencent.getQQToken()); + mInfo.getUserInfo(listener); + + } else { + mUserInfo.setText(""); + mUserInfo.setVisibility(android.view.View.GONE); + mUserLogo.setVisibility(android.view.View.GONE); + } + } + + public static void initOpenidAndToken(JSONObject jsonObject) { + try { + String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN); + String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN); + String openId = jsonObject.getString(Constants.PARAM_OPEN_ID); + if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) { + mTencent.setAccessToken(token, expires); + mTencent.setOpenId(openId); + } + } catch (Exception e) { + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + Log.d(TAG, "-->onActivityResult " + requestCode + " resultCode=" + resultCode); + if (requestCode == Constants.REQUEST_LOGIN || requestCode == Constants.REQUEST_APPBAR) { + Tencent.onActivityResultData(requestCode, resultCode, data, loginListener); + } + + super.onActivityResult(requestCode, resultCode, data); + } +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MainActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MainActivity.class index cad8982..22fe1c0 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/MainActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MainActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity$1.class new file mode 100644 index 0000000..858af0f Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity$2.class new file mode 100644 index 0000000..6bd99a6 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.class index c6a424b..7d222ef 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..5e612f4 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,202 @@ +package com.stone.shop.view; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.ListView; +import android.widget.Toast; +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.CountListener; + +import com.stone.date.MessageDef; +import com.stone.shop.R; +import com.stone.shop.adapter.MineListAdapter; +import com.stone.shop.model.Order; + +/** + * 个人中心主界面 + * @date 2014-4-24 + * @author Stone + */ +public class MineActivity extends Activity implements OnItemClickListener{ + + private static final String TAG = "MineActivity" ; + + private String[] userItemNames = {"stonekity"} ; + private String[] userItemContents = {""} ; + private String[] orderItemNames = {"当前订单", "历史订单"}; + private String[] orderItemContents = {"*", ""}; + private String[] aboutItemNames = {"通知中心", "软件相关", "推荐给朋友", "退出账号"}; + private String[] aboutItemContents = {"", "", "", ""}; + + private int[] userImgIds = {R.drawable.ic_menu_myplaces}; + private int[] orderImgIds = {R.drawable.ic_menu_find_holo_light, R.drawable.ic_menu_copy_holo_light}; + private int[] aboutImgIds = {R.drawable.ic_menu_notifications, R.drawable.ic_menu_info_details, R.drawable.ic_menu_share, R.drawable.ic_star_yes}; + + private ListView lvMineUser; + private ListView lvMineOrder; + private ListView lvMineAbout; + private MineListAdapter userListAdapter; + private MineListAdapter orderListAdapter; + private MineListAdapter aboutListAdapter; + + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MessageDef.MINE_FINISH_LOAD_DATA: + //toast("Handler 收到数据加载完成的消息"); + orderListAdapter.notifyDataSetChanged(); + break; + default: + break; + } + } +}; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_mine); + + initData("已取餐"); + initData("未取餐"); + initView(); + } + + private void initView() { + + lvMineUser = (ListView) findViewById(R.id.lv_mine_user); + lvMineOrder = (ListView) findViewById(R.id.lv_mine_order); + lvMineAbout = (ListView) findViewById(R.id.lv_mine_about); + + userListAdapter = new MineListAdapter(this, userItemNames, userItemContents, userImgIds); + orderListAdapter = new MineListAdapter(this, orderItemNames, orderItemContents, orderImgIds); + aboutListAdapter = new MineListAdapter(this, aboutItemNames, aboutItemContents, aboutImgIds); + + lvMineUser.setAdapter(userListAdapter); + lvMineOrder.setAdapter(orderListAdapter); + lvMineAbout.setAdapter(aboutListAdapter); + + lvMineUser.setOnItemClickListener(this); + lvMineOrder.setOnItemClickListener(this); + lvMineAbout.setOnItemClickListener(this); + + } + + //初始化列表菜单中数据 + public void initData(final String type) { + //获取用户 + BmobUser user = BmobUser.getCurrentUser(this); + userItemNames[0] = user.getUsername(); + + //获取小菜订单(数量) + BmobQuery query = new BmobQuery(); + query.order("-updatedAt"); + query.addWhereEqualTo("userName", user.getUsername()); + query.addWhereEqualTo("state", type); + query.count(this, Order.class, new CountListener() { + + @Override + public void onSuccess(int count) { + if(type.equals("未取餐")) { + orderItemContents[0] ="( " +count+ " )"; + } + if(type.equals("已取餐")) { + orderItemContents[1] ="( " +count+ " )"; + } + Message msg = new Message(); + msg.what = MessageDef.MINE_FINISH_LOAD_DATA; + mHandler.sendMessage(msg); + } + + @Override + public void onFailure(int arg0, String arg1) { + toast("查询失败"); + } + }); + + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + + //个人资料 + if(parent.getId() == R.id.lv_mine_user) { + switch (position) { + case 0: //资料卡 + //toast("点击个人资料"); + Intent toMineInfo = new Intent(MineActivity.this, MineInfoActivity.class); + startActivity(toMineInfo); + break; + + default: + break; + } + } + + //小菜订单 + if(parent.getId() == R.id.lv_mine_order) { + //toast("点击了订单区域"); + Intent toOrderInfo; + switch (position) { + case 0: + toOrderInfo = new Intent(MineActivity.this, OrderInfoActivity.class); + toOrderInfo.putExtra("type", "now"); + startActivity(toOrderInfo); + break; + case 1: + toOrderInfo = new Intent(MineActivity.this, OrderInfoActivity.class); + toOrderInfo.putExtra("type", "old"); + startActivity(toOrderInfo); + break; + default: + break; + } + } + + //其他 + if(parent.getId() == R.id.lv_mine_about) { + + switch (position) { + case 1: //软件相关 + Intent toMineSoft = new Intent(MineActivity.this, MineSoftActivity.class); + startActivity(toMineSoft); + break; + case 2: //推荐给朋友 + Intent toShare = new Intent(Intent.ACTION_SEND); + toShare.setType("text/plain"); + toShare.putExtra(Intent.EXTRA_SUBJECT, "分享"); + toShare.putExtra(Intent.EXTRA_TEXT, "校园小菜-HBUT版" +"\n" + "针对湖工大的校园小菜测试版上线了,赶紧下载体验吧" + + "http://xiaocai.bmob.cn"); + startActivity(Intent.createChooser(toShare, "分享到")); + break; + case 3: //退出当期账号 + BmobUser.logOut(this); + Intent toLogin = new Intent(MineActivity.this, LoginActivity.class); + startActivity(toLogin); + finish(); + break; + + default: + //toast("点击了通知区域"); + break; + } + + } + + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity$1.class new file mode 100644 index 0000000..edd28ab Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity$2.class new file mode 100644 index 0000000..2705443 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity.class new file mode 100644 index 0000000..83ffc43 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..d5ce189 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,124 @@ +package com.stone.shop.view; + +import java.util.List; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.FindListener; + +import com.stone.date.MessageDef; +import com.stone.shop.R; +import com.stone.shop.model.User; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +/** + * 个人资料卡 + * @date 2014-5-21 + * @author Stone + */ +public class MineInfoActivity extends Activity { + + private TextView tvUsername; + private TextView tvSchool; + private TextView tvCademy; + private TextView tvDorPart; + private TextView tvDorNum; + private TextView tvPhone; + private TextView tvQQ; + + private User curUser = new User(); + + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MessageDef.MINE_INFO_FINISH_FIND_USER: + initView(); + break; + default: + break; + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_mine_info); + + getCurUser(); + } + + private void initView() { + tvUsername = (TextView) findViewById(R.id.tv_mineinfo_username); + tvSchool = (TextView) findViewById(R.id.tv_mineinfo_school); + tvCademy = (TextView) findViewById(R.id.tv_mineinfo_cademy); + tvDorPart = (TextView) findViewById(R.id.tv_mineinfo_dorpart); + tvDorNum = (TextView) findViewById(R.id.tv_mineinfo_dornum); + tvPhone = (TextView) findViewById(R.id.tv_mineinfo_phone); + tvQQ = (TextView) findViewById(R.id.tv_mineinfo_qq); + + tvUsername.setText(curUser.getUsername()); + tvSchool.setText(curUser.getSchool()); + tvCademy.setText(curUser.getCademy()); + tvDorPart.setText(curUser.getDorPart()); + tvDorNum.setText(curUser.getDorNum()); + tvPhone.setText(curUser.getPhone()); + tvQQ.setText(curUser.getQQ()); + + } + + private void getCurUser() { + BmobUser bmobUser = BmobUser.getCurrentUser(this); + BmobQuery query = new BmobQuery(); + query.addWhereEqualTo("objectId", bmobUser.getObjectId()); + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List object) { + curUser = object.get(0); + Message msg = new Message(); + msg.what = MessageDef.MINE_INFO_FINISH_FIND_USER; + mHandler.sendMessage(msg); + } + + @Override + public void onError(int arg0, String arg1) { + toast("亲, 获取当前用户失败"); + } + }); + + } + + public void clickEdit(View v) { + Intent toEditMineInfo = new Intent(MineInfoActivity.this, MineInfoEditActivity.class); +// Bundle bundle = new Bundle(); +// bundle.putString("username", curUser.getUsername()); +// bundle.putString("school", curUser.getSchool()); +// bundle.putString("cademy", curUser.getCademy()); +// bundle.putString("dorpart", curUser.getDorPart()); +// bundle.putString("dornum", curUser.getDorNum()); +// bundle.putString("phone", curUser.getPhone()); +// bundle.putString("qq", curUser.getQQ()); +// toEditMineInfo.putExtras(bundle); + startActivity(toEditMineInfo); + } + + public void clickBack(View v) { + finish(); + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity$1.class new file mode 100644 index 0000000..e9769ec Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.class index 538e72b..f047b18 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..39902ea --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineInfoEditActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,145 @@ +package com.stone.shop.view; + +import java.util.List; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.FindListener; +import cn.bmob.v3.listener.UpdateListener; + +import com.stone.date.MessageDef; +import com.stone.shop.R; +import com.stone.shop.model.User; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +/** + * 修改个人资料卡 + * @date 2014-5-28 + * @author Stone + */ +public class MineInfoEditActivity extends Activity { + + private EditText etUsername; + private EditText etSchool; + private EditText etCademy; + private EditText etDorPart; + private EditText etDorNum; + private EditText etPhone; + private EditText etQQ; + + private User curUser; + private Bundle bundle; + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MessageDef.MINE_INFO_FINISH_FIND_USER: + initView(); + break; + default: + break; + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_mine_info_edit); + + setCurUser(); + } + + private void initView() { + etUsername = (EditText) findViewById(R.id.et_mineinfo_username); + etSchool = (EditText) findViewById(R.id.et_mineinfo_school); + etCademy = (EditText) findViewById(R.id.et_mineinfo_cademy); + etDorPart = (EditText) findViewById(R.id.et_mineinfo_dorpart); + etDorNum = (EditText) findViewById(R.id.et_mineinfo_dornum); + etPhone = (EditText) findViewById(R.id.et_mineinfo_phone); + etQQ = (EditText) findViewById(R.id.et_mineinfo_qq); + + etUsername.setText(curUser.getUsername()); + etSchool.setText(curUser.getSchool()); + etCademy.setText(curUser.getCademy()); + etDorPart.setText(curUser.getDorPart()); + etDorNum.setText(curUser.getDorNum()); + etPhone.setText(curUser.getPhone()); + etQQ.setText(curUser.getQQ()); + } + + private void setCurUser() { + BmobUser bmobUser = BmobUser.getCurrentUser(this); + BmobQuery query = new BmobQuery(); + query.addWhereEqualTo("objectId", bmobUser.getObjectId()); + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List object) { + curUser = object.get(0); + //toast("查询到用户 " + object.size()); + Message msg = new Message(); + msg.what = MessageDef.MINE_INFO_FINISH_FIND_USER; + mHandler.sendMessage(msg); + } + + @Override + public void onError(int arg0, String arg1) { + toast("获取当前用户失败"); + } + }); + + } + + private void saveUserInfo() { + if(curUser == null) { + toast("curUser为空"); + } else { + toast("当前用户为 " + curUser.getUsername()); + } + Log.i("当前用户的ID: ", curUser.getObjectId()); + curUser.setUsername(etUsername.getText().toString()); + curUser.setSchool(etSchool.getText().toString()); + curUser.setCademy(etCademy.getText().toString()); + curUser.setDorPart(etDorPart.getText().toString()); + curUser.setDorNum(etDorNum.getText().toString()); + curUser.setPhone(etPhone.getText().toString()); + curUser.setQQ(etQQ.getText().toString()); + curUser.update(this, curUser.getObjectId(), new UpdateListener() { + + @Override + public void onSuccess() { + toast("更新成功"); + } + + @Override + public void onFailure(int arg0, String arg1) { + toast("更新失败"); + } + }); + } + + public void clickSave(View v) { + saveUserInfo(); + finish(); + } + + public void clickCancel(View v) { + finish(); + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MineSoftActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineSoftActivity.class new file mode 100644 index 0000000..bfefefe Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MineSoftActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiScreenActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiScreenActivity.class index ef553b3..26675d3 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiScreenActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiScreenActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiViewGroup.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiViewGroup.class index 09c6d31..e1b6850 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiViewGroup.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/MultiViewGroup.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.class index bef67fc..6bb09ca 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..2014960 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/NewsActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,72 @@ +package com.stone.shop.view; + +import com.stone.shop.R; + +import android.app.Activity; +import android.os.Bundle; +import android.widget.TextView; + +/** + * 新闻内容显示界面 + * @date 2014-5-8 + * @author Stone + */ +public class NewsActivity extends Activity { + + private static String TAG = "NewsActivity"; + + private TextView tvNewsTitle; + private TextView tvNewsAuthor; + private TextView tvNewsTime; + private TextView tvNewsContent; + + private String newsTitle; + private String newsAuthor; + private String newsTime; + private String newsContent; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_news); + + getIntentData(); + initView(); + } + + //获取Intent中传入的新闻数据 + private void getIntentData() { + newsTitle = getIntent().getStringExtra("NewsTitle"); + newsAuthor = getIntent().getStringExtra("NewsAuthor"); + newsTime = getIntent().getStringExtra("NewsTime"); + newsContent = getIntent().getStringExtra("NewsContent"); + + newsTitle = splitString(newsTitle); //拆分字符串, 将新闻标题设置为 "】" 后面的内容 + } + + private String splitString(String str) { + String[] strs = null; + if(str.equals("")){ + return ""; + } else if ( !(str.contains("【") || str.contains("】")) ) { + return str; + } + strs = str.split("】"); + return strs[1]; + } + + private void initView() { + tvNewsTitle = (TextView) findViewById(R.id.tv_news_title); + tvNewsAuthor = (TextView) findViewById(R.id.tv_news_author); + tvNewsTime = (TextView) findViewById(R.id.tv_news_time); + tvNewsContent = (TextView) findViewById(R.id.tv_news_content); + + tvNewsTitle.setText(newsTitle); + tvNewsAuthor.setText("作者: "+newsAuthor); + tvNewsTime.setText("发布日期 : "+newsTime); + tvNewsContent.setText(newsContent); + } + + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity$1.class new file mode 100644 index 0000000..0ab4111 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.class index af1465b..107cc7b 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..fcdf913 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,218 @@ +package com.stone.shop.view; + +import java.util.Calendar; + +import android.app.Activity; +import android.app.TimePickerDialog; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.TimePicker; +import android.widget.Toast; + +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.SaveListener; + +import com.stone.shop.R; +import com.stone.shop.model.Good; +import com.stone.shop.model.Order; +import com.stone.shop.model.Shop; +import com.stone.ui.DialogOrder; +import com.stone.util.Util; + +/** + * 应用主界面 + * + * @date 2014-5-13 + * @author Stone + */ +public class OrderActivity extends Activity implements OnClickListener { + + private TextView tvOrderShop; // 店名 + private TextView tvOrderGood; // 菜名 + private TextView tvOrderCount; // 数量 + private TextView tvOrderTime; // 取餐时间 + private TimePicker tpOrderTime; // 时间选择控件 + private EditText etOrderPhone; // 联系电话 + private EditText etOrderWords; // 附加留言 + private Button btnOrderCountMore; // 增加数量 + private Button btnOrderCountLess; // 减少数量 + + private Button btnOrderSetTime; // 设置时间 + private Button btnDlgOk; // 设置时间完成 + private Button btnOrderSubmit; // 提交订单 + + // private DialogOrder dlgSetOrderTime; + // private View dlgOrderView; + private int mHour; + private int mMinute; + private String time = "12 : 30"; + private TimePickerDialog dlgSetOrderTime; + private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { + + public void onTimeSet(TimePicker view, int hourOfDay, int minute) { + mHour = hourOfDay; + mMinute = minute; + updateDisplay(); + } + }; + + // 从上级页面中传入的数据 + private Shop shop; // 当期选择的Shop + private Good good; // 当前选择的商品 + private String shopID; // 当前选择的Shop的ID + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_order); + + shop = (Shop) getIntent().getSerializableExtra("shop"); + good = (Good) getIntent().getSerializableExtra("good"); + shopID = getIntent().getStringExtra("shopID"); + + initView(); + // initDlgView(); + } + + private void initView() { + + tvOrderShop = (TextView) findViewById(R.id.tv_order_shop); + tvOrderGood = (TextView) findViewById(R.id.tv_order_good); + tvOrderCount = (TextView) findViewById(R.id.tv_order_count); + tvOrderTime = (TextView) findViewById(R.id.tv_order_time); + tvOrderShop.setText(shop.getName()); + tvOrderGood.setText(good.getName()); + + etOrderPhone = (EditText) findViewById(R.id.et_order_phone); + etOrderWords = (EditText) findViewById(R.id.et_order_words); + + btnOrderCountMore = (Button) findViewById(R.id.btn_order_count_more); + btnOrderCountLess = (Button) findViewById(R.id.btn_order_count_less); + btnOrderSetTime = (Button) findViewById(R.id.btn_set_time); + btnOrderSubmit = (Button) findViewById(R.id.btn_order_submit); + btnOrderCountMore.setOnClickListener(this); + btnOrderCountLess.setOnClickListener(this); + btnOrderSetTime.setOnClickListener(this); + btnOrderSubmit.setOnClickListener(this); + + } + + // private void initDlgView() { + // LayoutInflater inflater = LayoutInflater.from(this); + // dlgOrderView = inflater.inflate(R.layout.dlg_order_settime, null); + // tpOrderTime = (TimePicker) dlgOrderView.findViewById(R.id.tp_dlg_time); + // tpOrderTime.setIs24HourView(true); + // btnDlgOk = (Button) dlgOrderView.findViewById(R.id.btn_dlg_ok); + // btnDlgOk.setOnClickListener(this); + // } + + @Override + public void onClick(View v) { + int count = 1; + switch (v.getId()) { + case R.id.btn_order_count_more: + count = Integer.parseInt(tvOrderCount.getText().toString()); + if (count == 4) { + toast("每份订单数量不能超过 4"); + } else { + tvOrderCount.setText((count + 1) + ""); + } + break; + case R.id.btn_order_count_less: + count = Integer.parseInt(tvOrderCount.getText().toString()); + if (count == 1) { + toast("每份订单数量至少为 1 "); + } else { + tvOrderCount.setText((count - 1) + ""); + } + break; + case R.id.btn_set_time: + // dlgSetOrderTime = new DialogOrder(this, R.style.MyDialog); + // dlgSetOrderTime.show(); + final Calendar c = Calendar.getInstance(); + mHour = c.get(Calendar.HOUR_OF_DAY); + mMinute = c.get(Calendar.MINUTE); + dlgSetOrderTime = new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, true); + dlgSetOrderTime.show(); + break; + case R.id.btn_dlg_ok: + time = tpOrderTime.getCurrentHour() + " : " + tpOrderTime.getCurrentMinute(); + dlgSetOrderTime.dismiss(); + case R.id.btn_order_submit: + // toast("小菜订单提交成功"); + postOrder(); + finish(); + // back(); + break; + default: + break; + } + + } + + /** + * 提交订单数据 + */ + private void postOrder() { + String count = tvOrderCount.getText().toString(); + String phone = etOrderPhone.getText().toString(); + String words = etOrderWords.getText().toString(); + float price = Integer.parseInt(count) * Float.parseFloat(good.getPrice()); + if (!Util.isPhoneNumberValid(phone)) { + toast("请输入正确的联系电话, 方便取餐"); + } else { + Order order = new Order(); + BmobUser user = BmobUser.getCurrentUser(this); + order.setUserName(user.getUsername()); + order.setGoodID(good.getObjectId()); + order.setGoodName(good.getName()); + order.setShopID(shop.getObjectId()); + order.setShopName(shop.getName()); + order.setCount(count); + order.setTime(time); + order.setPrice(price + ""); + order.setPhone(phone); + order.setTips(words); + order.save(this, new SaveListener() { + + @Override + public void onSuccess() { + // TODO Auto-generated method stub + toast("订单提交成功"); + } + + @Override + public void onFailure(int arg0, String arg1) { + // TODO Auto-generated method stub + toast("订单提交失败"); + } + }); + + } + } + + private void updateDisplay() { + time = mHour + " : " + mMinute; + tvOrderTime.setText(time); + } + + private void back() { + Intent back = new Intent(OrderActivity.this, ShopItemActivity.class); + Bundle bundle = new Bundle(); + bundle.putSerializable("shop", shop); + bundle.putString("shopID", shopID); // 商铺的ID需要单独传递,否则获取到的是null + back.putExtras(bundle); + startActivity(back); + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity$2.class new file mode 100644 index 0000000..1920a25 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.class index 32bb86f..544206e 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..e3c3d26 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/OrderInfoActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,116 @@ +package com.stone.shop.view; + +import java.util.ArrayList; +import java.util.List; + +import android.app.Activity; +import android.os.Bundle; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.ListView; +import android.widget.PopupMenu; +import android.widget.Toast; +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.FindListener; + +import com.stone.shop.R; +import com.stone.shop.adapter.OrderInfoListAdapter; +import com.stone.shop.model.Order; + +/** + * 订单详情页面 + * + * @date 2014-5-27 + * @author Stone + */ +public class OrderInfoActivity extends Activity implements OnItemLongClickListener{ + + private static final String TAG = "OrderInfoActivity"; + + private ListView lvOrderInfo; + private OrderInfoListAdapter orderInfoListAdapter; + private List orderList = new ArrayList(); + + private String type = ""; // now-当前订单 old-历史订单 + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_order_info); + + type = getIntent().getStringExtra("type"); + + initData(); + initView(); + } + + private void initView() { + lvOrderInfo = (ListView) findViewById(R.id.lv_order_info); + orderInfoListAdapter = new OrderInfoListAdapter(this, orderList); + lvOrderInfo.setAdapter(orderInfoListAdapter); + lvOrderInfo.setOnItemLongClickListener(this); + } + + // 初始化列表菜单中数据 + public void initData() { + // 获取用户 + BmobUser user = BmobUser.getCurrentUser(this); + + // 获取小菜订单(数量) + BmobQuery query = new BmobQuery(); + query.order("-updatedAt"); + query.addWhereEqualTo("userName", user.getUsername()); + if(type.equals("now")) { + query.addWhereEqualTo("state", "未取餐"); + } else if(type.equals("old")) { + query.addWhereEqualTo("state", "已取餐"); + } else { + // do nothing + } + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List object) { + if (object.size() == 0) + toast("您还没有订单"); + orderList = object; + // 通知Adapter数据更新 + orderInfoListAdapter.refresh(orderList); + orderInfoListAdapter.notifyDataSetChanged(); + } + + @Override + public void onError(int arg0, String arg1) { + toast("查询失败"); + } + }); + + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + //订单长按响应事件 + @Override + public boolean onItemLongClick(AdapterView parent, View view, + int position, long id) { + PopupMenu popup = new PopupMenu(this, lvOrderInfo); + popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu()); + + popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + public boolean onMenuItemClick(MenuItem item) { + Toast.makeText(OrderInfoActivity.this, "Clicked popup menu item " + item.getTitle(), + Toast.LENGTH_SHORT).show(); + return true; + } + }); + + popup.show(); + return false; + }; + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.class index 48820bd..b28aa44 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..f57ac81 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/RegisterActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,108 @@ +package com.stone.shop.view; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.stone.shop.R; +import com.stone.shop.model.User; +import com.stone.util.Util; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; +import cn.bmob.v3.listener.SaveListener; + +/** + * 注册界面 + * + * @date 2014-4-24 + * @author Stone + */ +public class RegisterActivity extends Activity implements OnClickListener { + + private static final String TAG = "RegisterActivity"; + + private Button btnReg; + private EditText etUsername; + private EditText etPassword; + private EditText etComfirmPsd; + private EditText etPhone; + + private String username = null; + private String password = null; + private String comfirmPsd = null; + private String phone = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_reg); + + etUsername = (EditText) findViewById(R.id.et_username); + etPassword = (EditText) findViewById(R.id.et_password); + etComfirmPsd = (EditText) findViewById(R.id.et_comfirm_psd); + etPhone = (EditText) findViewById(R.id.et_phone); + + btnReg = (Button) findViewById(R.id.btn_reg_now); + btnReg.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_reg_now: + username = etUsername.getText().toString(); + password = etPassword.getText().toString(); + comfirmPsd = etComfirmPsd.getText().toString(); + phone = etPhone.getText().toString(); + if (!Util.isNetworkConnected(this)) { + toast("木有网络 ( ⊙ o ⊙ ) "); + } else if (username.equals("") || password.equals("") || comfirmPsd.equals("") || phone.equals("")) { + toast("不填完整不能拿到身份证, ~~~~(>_<)~~~~ "); + } else if (!comfirmPsd.equals(password)) { + toast("两次密码输入不一致"); + } else if (!Util.isPhoneNumberValid(phone)) { + toast("请输入正确的手机号码"); + } else { + // 开始提交注册信息 + User bu = new User(); + bu.setUsername(username); + bu.setPassword(password); + bu.setPhone(phone); + bu.signUp(this, new SaveListener() { + + @Override + public void onSuccess() { + // TODO Auto-generated method stub + toast("拿到身份证了,快登陆吧"); + Intent backLogin = new Intent(RegisterActivity.this, LoginActivity.class); + startActivity(backLogin); + RegisterActivity.this.finish(); + } + + @Override + public void onFailure(int arg0, String arg1) { + // TODO Auto-generated method stub + toast("该名字已被人使用,换个名字吧."); + } + } + + ); + } + break; + + default: + break; + } + } + + public void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + }; + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$1.class new file mode 100644 index 0000000..74a2f31 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$2$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$2$1.class new file mode 100644 index 0000000..c8072eb Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$2$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$2.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$2.class new file mode 100644 index 0000000..a9ce27b Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity.class new file mode 100644 index 0000000..6812395 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..90bf398 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/ReservationActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,138 @@ +package com.stone.shop.view; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +import com.stone.shop.R; +import com.stone.shop.model.Reservation; +import com.stone.shop.model.User; +import com.stone.ui.DateTimePickDialogUtil; +import com.stone.ui.DateTimePickDialogUtil.DateTimeListener; + +import android.app.Activity; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.listener.DeleteListener; +import cn.bmob.v3.listener.FindListener; +import cn.bmob.v3.listener.SaveListener; + +public class ReservationActivity extends Activity { + + private Button btn_login; + private SimpleDateFormat dateFormat; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.layout_reservation); + + TextView tv_title = (TextView) findViewById(R.id.tv_title); + tv_title.setText("教室预定"); + + final String roomId = getIntent().getStringExtra("roomId"); + final String roomName = getIntent().getStringExtra("roomName"); + + TextView tv_room = (TextView) findViewById(R.id.tv_room); + tv_room.setText("教室:" + roomName); + + btn_login = (Button) findViewById(R.id.btn_login); + + dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm"); + + // 查找Person表里面id为6b6c11c537的数据 + BmobQuery bmobQuery = new BmobQuery(); + bmobQuery.addWhereEqualTo("userId", User.userId); + bmobQuery.addWhereEqualTo("roomId", roomId); + bmobQuery.findObjects(ReservationActivity.this, new FindListener() { + + @Override + public void onSuccess(List newsList) { + // toast("查询商品成功, 共" + newsList.size()); + if (newsList.size() != 0) { + + String dateTime = newsList.get(0).getDateTime(); + + try { + if (dateFormat.parse(dateTime).before(new Date())) { + + Reservation gameScore = new Reservation(); + gameScore.setObjectId(newsList.get(0).getObjectId()); + gameScore.delete(ReservationActivity.this); + + } else { + btn_login.setEnabled(false); + btn_login.setText("已经预定" + (TextUtils.isEmpty(dateTime) ? "" : (" " + dateTime))); + } + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + } + + @Override + public void onError(int arg0, String arg1) { + toast("查询失败"); + } + }); + + btn_login.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + + DateTimePickDialogUtil dateTimePicKDialog = new DateTimePickDialogUtil(ReservationActivity.this, + dateFormat.format(new Date())); + dateTimePicKDialog.dateTimePicKDialog(new DateTimeListener() { + + @Override + public void onDateTimeChane(final String dateTime) { + // TODO Auto-generated method stub + + Reservation reservation = new Reservation(); + reservation.setRoomId(roomId); + reservation.setRoomName(roomName); + reservation.setUserId(User.userId); + reservation.setDateTime(dateTime); + + reservation.save(ReservationActivity.this, new SaveListener() { + + @Override + public void onSuccess() { + // TODO Auto-generated method stub + toast("预定成功"); + btn_login.setEnabled(false); + btn_login.setText("已经预定 " + dateTime); + + } + + @Override + public void onFailure(int arg0, String arg1) { + // TODO Auto-generated method stub + toast("预定失败"); + + } + }); + } + }); + + } + }); + + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.class index 90d1f67..5204d3e 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..01f5159 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,135 @@ +package com.stone.shop.view; + +import com.stone.shop.R; +import com.stone.shop.adapter.GridAdapter; +import com.stone.ui.MyGridView; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.GridView; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +/** + * 商品主界面 + * @date 2014-4-24 + * @author Stone + */ +public class ShopActivity extends Activity implements OnItemClickListener{ + + private static final String TAG = "ShopActivity" ; + + private MyGridView gvSchoolClass; //学习小菜 + private MyGridView gvFoodClass; //吃饭小菜 + private MyGridView gvGiftClass; //购物小菜 + private MyGridView gvOutClass; //疯狂小菜 + + //private ImageView imgLoc; + //private ImageView imgSearch; + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_shop); + + initView(); + } + + /** + * 初始化组件并适配数据 + */ + public void initView() { + gvFoodClass = (MyGridView) findViewById(R.id.gv_food_class); + gvGiftClass = (MyGridView) findViewById(R.id.gv_gift_class); + gvOutClass = (MyGridView) findViewById(R.id.gv_out_class); + gvSchoolClass = (MyGridView) findViewById(R.id.gv_school_class); + + gvFoodClass.setAdapter(new GridAdapter(this, 0)); + gvFoodClass.setOnItemClickListener(this); + + gvGiftClass.setAdapter(new GridAdapter(this, 1)); + gvGiftClass.setOnItemClickListener(this); + + gvOutClass.setAdapter(new GridAdapter(this, 2)); + gvOutClass.setOnItemClickListener(this); + + gvSchoolClass.setAdapter(new GridAdapter(this, 3)); + gvSchoolClass.setOnItemClickListener(this); + + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + Log.i("GridView点击了: ", "position"+position); + //toast("点击了: " + position); + switch (parent.getId()) { + + //点击 学习小菜 中的子项(1代表第一个GridView, (position+1)代表GridView中第几个元素) + case R.id.gv_school_class: + //教学类的做特别处理 + if(position==2) { + Intent toInformationActivity = new Intent(ShopActivity.this,InformationActivity.class); + startActivity(toInformationActivity); + } + if(position==1) { + Intent toBXTActivity = new Intent(ShopActivity.this,LibraryActivity.class); + startActivity(toBXTActivity); + } + if(position==0) { + Intent toBXTActivity = new Intent(ShopActivity.this, ClassroomActivity.class); + startActivity(toBXTActivity); + } + + break; + //点击 吃饭小菜 中的子项 + case R.id.gv_food_class: + toShopAllActivity( GridAdapter.mFoodTexts[position], "2"+(position+1) ); + break; + //点击 购物小菜 中的子项 + case R.id.gv_gift_class: + if(position==0) { + Intent toBXTActivity = new Intent(ShopActivity.this, BXTActivity.class); + startActivity(toBXTActivity); + } else { + toShopAllActivity( GridAdapter.mGiftTexts[position], "3"+(position+1) ); + } + break; + //点击 疯狂小菜 中的子项 + case R.id.gv_out_class: + toShopAllActivity( GridAdapter.mOutTexts[position], "4"+(position+1) ); + break; + default: + break; + } + + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + }; + + /** + * + * @param title 父分类标题 + * @param type + */ + private void toShopAllActivity(String title, String type) { + Intent toShopAll = new Intent(ShopActivity.this, ShopAllActivity.class); + toShopAll.putExtra("title", title); + //当前点击的项的父分类 + toShopAll.putExtra("type", type); + startActivity(toShopAll); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopAllActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopAllActivity.class new file mode 100644 index 0000000..87d0a1c Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopAllActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopAllActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopAllActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..9dc775b --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopAllActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,120 @@ +package com.stone.shop.view; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.listener.FindListener; + +import com.stone.shop.R; +import com.stone.shop.adapter.ShopListAdapter; +import com.stone.shop.model.Shop; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.AdapterView.OnItemClickListener; + +/** + * 某一分类下的所有店铺页面 + * @author Stone + * @date 2014-4-26 + */ +public class ShopAllActivity extends Activity implements OnItemClickListener{ + + private static final String TAG = "ShopAllActivity" ; + + private TextView tvTitle; + private ListView lvShopAllList; + private ShopListAdapter shopListAdapter; + + //记录从ShopActivity中传过来的当前点击项的类型 + private String type; + private List shopList = new ArrayList(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_shop_all); + + //得到从上级Activity中传入的Type数据 + type = getIntent().getStringExtra("type"); + + //获取商店数据 + getShopsDate(); + + initView(); + + } + + public void initView() { + //设置标题 + tvTitle = (TextView) findViewById(R.id.tv_title); + tvTitle.setText(getIntent().getStringExtra("title")); + + lvShopAllList = (ListView) findViewById(R.id.lv_shop_all); + shopListAdapter = new ShopListAdapter(this, (ArrayList) shopList, type); + lvShopAllList.setAdapter(shopListAdapter); + lvShopAllList.setOnItemClickListener(this); + + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + //toast("点击了: " + position); + //将当前点击的Shop对象传递给下一个Activity + Intent toShopItem = new Intent(ShopAllActivity.this, ShopItemActivity.class); + Bundle bundle = new Bundle(); + bundle.putSerializable("shop", shopList.get(position) ); + bundle.putString("shopID", shopList.get(position).getObjectId()); //商铺的ID需要单独传递,否则获取到的是null + Log.i(TAG, ">>发出>>" + "shopID: "+shopList.get(position).getObjectId()+" shopName: "+shopList.get(position).getName()); + toShopItem.putExtras(bundle); + startActivity(toShopItem); + } + + /** + * 加载当前分类的所有店铺到ListView中 + */ + private void getShopsDate() { + BmobQuery query = new BmobQuery(); + query.order("-updatedAt"); + Shop shop = new Shop(); + shop.setType(type); + query.addWhereEqualTo("type", shop.getType()); // 查询当前类型的所有店铺 + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List object) { + //toast("查询成功. 共计" + object.size()); + if(object.size()==0) + toast("还没开张, 耐心等待吧"); + shopList = object; + // 通知Adapter数据更新 + shopListAdapter.refresh((ArrayList) shopList); + shopListAdapter.notifyDataSetChanged(); + + } + + @Override + public void onError(int arg0, String msg) { + toast("查询失败:"+msg); + } + + }); + } + + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + }; + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.class index 451a694..1832e70 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.class and b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..4b65a2a --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/ShopItemActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,313 @@ +package com.stone.shop.view; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.support.v4.view.PagerTabStrip; +import android.support.v4.view.PagerTitleStrip; +import android.support.v4.view.ViewPager; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.BmobQuery.CachePolicy; +import cn.bmob.v3.listener.FindListener; + +import com.stone.shop.R; +import com.stone.shop.adapter.GoodsListAdapter; +import com.stone.shop.adapter.ViewPagerAdapter; +import com.stone.shop.model.Good; +import com.stone.shop.model.Shop; +import com.stone.ui.ViewPagerCompat; + +public class ShopItemActivity extends Activity implements OnClickListener, OnItemClickListener{ + + private static final String TAG = "ShopItemActivity"; + + // ViewPager页 + private View view1, view2; // + private ViewPagerCompat viewPager; // viewpager + private ViewPagerAdapter shopViewPagerAdapter; + private PagerTitleStrip pagerTitleStrip; // viewpager的标题 + private PagerTabStrip pagerTabStrip; // 一个viewpager的指示器,效果就是一个横的粗的下划线 + private List viewList; // 把需要滑动的页卡添加到这个list中 + private List titleList; // viewpager的标题 + + // 店铺商品列表 + private ListView lvGoodsList; + private GoodsListAdapter goodsListAdapter; + private Button btnBuyGood; + + // 店铺简介页中的控件 + private TextView tvShopName; // 店铺名 + private TextView tvShopInfo; // 店铺简介 + private TextView tvShopSale; // 店铺促销信息 + private TextView tvShopLoc; // 店铺地理位置 + private TextView tvShopPhone; // 店铺电话 + private Button btnCommit; + private EditText etCommit; + private LinearLayout llCommitParent; // 评论父线性布局 + private LinearLayout llCommitSon; // 评论子线性布局 + private ImageView imgCall; // 拨打电话 + + // UI测试数据 + private static List goodsList; + + // 从上级页面中传入的数据 + private Shop shop; // 当期选择的Shop + private Good selectGood; + private String shopID; // 当前选择的Shop的ID + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_shop_item); + + // 获取到从ShopAllActivity中传递过来的Shop对象 + shop = (Shop) getIntent().getSerializableExtra("shop"); + shopID = getIntent().getStringExtra("shopID"); + Log.i(TAG, "<<收到<<" + "shopID: " + shop.getObjectId() + " shopName: " + + shop.getName()); + Log.i(TAG, + "<<收到<<" + "shopID: " + shopID + " shopName: " + shop.getName()); + + // 初始化商品页面以及适配数据 + initGoodsDate(); + initView(); + + + } + + public void initView() { + + viewPager = (ViewPagerCompat) findViewById(R.id.viewpager); + pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertab); + pagerTabStrip.setTabIndicatorColor(Color.rgb(255, 0, 0)); + pagerTabStrip.setDrawFullUnderline(false); + pagerTabStrip.setTextSpacing(50); + pagerTabStrip.setTextColor(Color.rgb(255, 0, 0)); + + view1 = LayoutInflater.from(this) + .inflate(R.layout.viewpager_menu, null); + view2 = LayoutInflater.from(this).inflate(R.layout.viewpager_shopinfo, + null); + + initContentView(); + + viewList = new ArrayList();// 将要分页显示的View装入数组中 + viewList.add(view1); + viewList.add(view2); + + titleList = new ArrayList();// 每个页面的Title数据 + titleList.add("商品"); + titleList.add("店铺简介"); + shopViewPagerAdapter = new ViewPagerAdapter(viewList, titleList); + + viewPager.setAdapter(shopViewPagerAdapter); + viewPager.setCurrentItem(0); + + } + + /** + * 获取某一商店的所有商品 + * + * @date 2014-5-1 + * @autor Stone + */ + public void initGoodsDate() { + goodsList = new ArrayList(); + goodsListAdapter = new GoodsListAdapter(this, goodsList); + BmobQuery query = new BmobQuery(); + query.addWhereEqualTo("shopID", shopID); + query.setCachePolicy(CachePolicy.CACHE_ELSE_NETWORK); // + // 先从缓存取数据,如果没有,再从网络取。 + query.setLimit(15); // 限制最多15个结果 + query.findObjects(this, new FindListener() { + + @Override + public void onSuccess(List goods) { + // toast("查询商品成功, 共" + goods.size()); + if (goods.size() == 0) { + toast("该店还没有添加商品"); + } + goodsList = goods; + goodsListAdapter.refresh(goodsList); + goodsListAdapter.notifyDataSetChanged(); + } + + @Override + public void onError(int arg0, String arg1) { + toast("查询失败"); + } + }); + + } + + public void initContentView() { + // 商品列表页 + lvGoodsList = (ListView) view1.findViewById(R.id.lv_goods_list); + lvGoodsList.setAdapter(goodsListAdapter); + lvGoodsList.setOnItemClickListener(this); + + // 店铺简介页 + tvShopName = (TextView) view2.findViewById(R.id.tv_shop_title); + tvShopInfo = (TextView) view2.findViewById(R.id.tv_shop_introduce); + tvShopSale = (TextView) view2.findViewById(R.id.tv_shop_promotion); + tvShopLoc = (TextView) view2.findViewById(R.id.tv_shop_location); + tvShopPhone = (TextView) view2.findViewById(R.id.tv_shop_phone); + tvShopName.setText(shop.getName()); // 设置店铺名 + tvShopInfo.setText(shop.getInfo()); // 设置店铺简介 + tvShopSale.setText(shop.getSale()); // 设置店铺公告 + tvShopLoc.setText("位置:" + "二食堂二楼"); // 设置店铺位置 + tvShopPhone.setText("电话:" + shop.getPhone()); // 设置店铺联系电话 + + btnCommit = (Button) view2.findViewById(R.id.btn_commit); + btnCommit.setOnClickListener(this); + + // 获取到评论的布局 + etCommit = (EditText) view2.findViewById(R.id.et_commit); + llCommitParent = (LinearLayout) view2 + .findViewById(R.id.ll_commit_parent_view); + llCommitSon = (LinearLayout) findViewById(R.id.ll_commit_son_view); + + imgCall = (ImageView) view2.findViewById(R.id.img_call); + imgCall.setOnClickListener(this); + + } + + /** + * 添加一条评论 + * + * @param user + * @param content + */ + public void insertCommit(String user, String content) { + View view = LayoutInflater.from(this).inflate(R.layout.commit, null); + TextView tvUser = (TextView) view.findViewById(R.id.tv_commit_user); + TextView tvContent = (TextView) view + .findViewById(R.id.tv_commit_content); + tvUser.setText(user); + tvContent.setText(content); + llCommitParent.addView(view); + tvUser = null; + tvContent = null; + } + +// public void clickBuyGood(View v) { +// Intent toOrderActivity = new Intent(ShopItemActivity.this, OrderActivity.class); +// Bundle bundle = new Bundle(); +// bundle.putSerializable("shop", shop ); +// bundle.putString("shopID", shopID); //商铺的ID需要单独传递,否则获取到的是null +// toOrderActivity.putExtras(bundle); +// startActivity(toOrderActivity); +// //------------------------------------------------------------------- +// toast("亲, 记得在弹出的对话框中选择数量哦"); +// Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); +// lvGoodsList.startAnimation(shake); +// +// // 显示订单对话框 +// orderDlg = new DialogOrder(this, R.style.MyDialog); +// orderDlg.show(); +// // 得到订单对话框的View +// LayoutInflater factory = LayoutInflater.from(this); +// dlgOrderView = factory.inflate(R.layout.dlg_order, null); +// tvOrderCount = (TextView) dlgOrderView +// .findViewById(R.id.tv_order_count); +// etOrderPhone = (EditText) dlgOrderView +// .findViewById(R.id.et_order_phone); +// etOrderWords = (EditText) dlgOrderView +// .findViewById(R.id.et_order_phone); +// ; +// btnOrderCount = (Button) dlgOrderView +// .findViewById(R.id.btn_order_count); +// btnOrderSubmit = (Button) dlgOrderView +// .findViewById(R.id.btn_order_submit); +// btnOrderCount.setOnClickListener(this); +// btnOrderSubmit.setOnClickListener(this); +// //------------------------------------------------------------------- +// } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_commit: + if (etCommit.getText().toString().equals("")) { + toast("亲,先写一句吧"); + } else { + SimpleDateFormat formatter = new SimpleDateFormat( + "yyyy年MM月dd日 HH:mm:ss "); + Date curDate = new Date(System.currentTimeMillis());// 获取当前时间 + String time = formatter.format(curDate); + String content = etCommit.getText().toString() + " [ " + time + + " ] "; + insertCommit("admin" + ":", content); + etCommit.setText(""); + } + break; + + case R.id.img_call: + toast("店主没有留下电话"); + break; + + default: + break; + } + + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + switch (viewPager.getCurrentItem()) { + case 0: + toast("选择的商品名称: " + goodsList.get(position).getName()); + selectGood = goodsList.get(position); + toast("点击了购买按钮"); + Intent toOrderActivity = new Intent(ShopItemActivity.this, OrderActivity.class); + Bundle bundle = new Bundle(); + bundle.putSerializable("shop", shop ); + bundle.putSerializable("good", selectGood); + bundle.putString("shopID", shopID); //商铺的ID需要单独传递,否则获取到的是null + toOrderActivity.putExtras(bundle); + startActivity(toOrderActivity); + //toast("点击了Position " + position); +// if(view.getId() == R.id.btn_buy_good) { +// toast("点击了购买按钮"); +// Intent toOrderActivity = new Intent(ShopItemActivity.this, OrderActivity.class); +// Bundle bundle = new Bundle(); +// bundle.putSerializable("shop", shop ); +// bundle.putSerializable("good", selectGood); +// bundle.putString("shopID", shopID); //商铺的ID需要单独传递,否则获取到的是null +// toOrderActivity.putExtras(bundle); +// startActivity(toOrderActivity); +// } + break; + case 1: + break; + default: + break; + } + + } + + public void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity$1.class new file mode 100644 index 0000000..8a23c90 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity.class new file mode 100644 index 0000000..3dd19d8 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..4ef6a65 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/SplashActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,75 @@ +package com.stone.shop.view; + +import com.stone.shop.R; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; +import android.view.animation.AnimationSet; +import android.view.animation.RotateAnimation; +import android.view.animation.ScaleAnimation; +import android.widget.RelativeLayout; + +public class SplashActivity extends Activity { + private RelativeLayout rlSplash; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + initView(); + initAnimation(); + } + + private void initView() { + setContentView(R.layout.activity_splash); + rlSplash = (RelativeLayout) findViewById(R.id.rl_splash); + } + + private void initAnimation() { + AnimationSet set = new AnimationSet(false); + RotateAnimation rtAnimation = new RotateAnimation(0, 360, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, + 0.5f); + rtAnimation.setDuration(2000); + rtAnimation.setFillAfter(true); + + ScaleAnimation scAnimation = new ScaleAnimation(0, 1, 0, 1, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, + 0.5f); + scAnimation.setDuration(2000); + scAnimation.setFillAfter(true); + + AlphaAnimation alAnimation = new AlphaAnimation(0, 1); + alAnimation.setDuration(2000); + alAnimation.setFillAfter(true); + + set.addAnimation(rtAnimation); + set.addAnimation(scAnimation); + set.addAnimation(alAnimation); + + set.setAnimationListener(new AnimationListener() { + + @Override + public void onAnimationStart(Animation arg0) { + + } + + @Override + public void onAnimationRepeat(Animation arg0) { + + } + + @Override + public void onAnimationEnd(Animation arg0) { + startActivity(new Intent(SplashActivity.this, + MultiScreenActivity.class)); + finish(); + } + }); + + rlSplash.startAnimation(set); + } +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/UserInfoActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/UserInfoActivity.class new file mode 100644 index 0000000..2e1050f Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/UserInfoActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/WsqActivity$1.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/WsqActivity$1.class new file mode 100644 index 0000000..1dfe8aa Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/WsqActivity$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/WsqActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/WsqActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..0b1947e --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/WsqActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,60 @@ +package com.stone.shop.view; + +import android.app.Activity; +import android.os.Bundle; +import android.webkit.WebChromeClient; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.Toast; + +import com.stone.shop.R; + +/** + * 购物车主界面 + * @date 2014-4-24 + * @author Stone + */ +public class WsqActivity extends Activity { + + private static final String TAG = "CarActivity"; + + private static final String URL_WSQ = "http://wx.wsq.qq.com/231782938"; + private WebView wsqWebView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_car); + + wsqWebView = (WebView) findViewById(R.id.wv_wsq); + + // ----------------------------------------------------------------- + + wsqWebView.getSettings().setJavaScriptEnabled(true); // 设置使用够执行JS脚本 + //wsqWebView.getSettings().setBuiltInZoomControls(true); // 设置使支持缩放 + wsqWebView.getSettings().setDefaultFontSize(12); + wsqWebView.setWebChromeClient(new WebChromeClient()); + wsqWebView.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, + String url) { + view.loadUrl(url);// 使用当前WebView处理跳转 + return true;// true表示此事件在此处被处理,不需要再广播 + } + + @Override + // 转向错误时的处理 + public void onReceivedError(WebView view, int errorCode, + String description, String failingUrl) { + Toast.makeText(WsqActivity.this, + "Oh no! " + description, Toast.LENGTH_SHORT) + .show(); + } + }); + wsqWebView.loadUrl(URL_WSQ); + // ------------------------------------------------ + + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldAboutActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldAboutActivity.class new file mode 100644 index 0000000..53167c8 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldAboutActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldMineActivity.class b/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldMineActivity.class new file mode 100644 index 0000000..1645ebf Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldMineActivity.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldMineActivity.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldMineActivity.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..a8886c8 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/shop/view/old/OldMineActivity.java~remotes_origin_zhaozaichun @@ -0,0 +1,166 @@ +package com.stone.shop.view.old; + +import java.util.List; + +import javax.security.auth.PrivateCredentialPermission; + +import cn.bmob.v3.BmobQuery; +import cn.bmob.v3.BmobUser; +import cn.bmob.v3.listener.FindListener; + +import com.stone.shop.R; +import com.stone.shop.model.User; +import com.stone.shop.view.AboutActivity; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +/** + * 个人中心主界面 + * @date 2014-4-24 + * @author Stone + */ +public class OldMineActivity extends Activity implements OnClickListener{ + + private static final String TAG = "OldMineActivity" ; + + private Button btnAbout; + private Button btnContact; + private Button btnJoin; + + private TextView tvUserName; //当前用户的用户名 + private TextView tvSchool; //学校 + private TextView tvCademy; //学院 + private TextView tvDorPart; //所在区 西区 + private TextView tvDorNum; //宿舍楼号 19栋 + + private TextView tvMe; //我 + private TextView tvXiaoCai; //小菜 + private TextView tvBowl; //饭碗 + private User user = new User(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_mine_old); + + BmobUser user = BmobUser.getCurrentUser(this); + Log.i(TAG, "BmobUser.userName = " + user.getUsername()); + getCurUser(user.getUsername()); + + initView(); + } + + public void initView() { + + tvUserName = (TextView) findViewById(R.id.tv_username); + tvSchool = (TextView) findViewById(R.id.tv_school); + tvCademy = (TextView) findViewById(R.id.tv_cademy); + tvDorPart = (TextView) findViewById(R.id.tv_dorPart); + tvDorNum = (TextView) findViewById(R.id.tv_dorNum); + + btnAbout = (Button) findViewById(R.id.btn_about); + btnContact = (Button) findViewById(R.id.btn_contact); + btnJoin = (Button) findViewById(R.id.btn_share); + + tvUserName = (TextView) findViewById(R.id.tv_username); + tvMe = (TextView) findViewById(R.id.tv_me); + tvXiaoCai = (TextView) findViewById(R.id.tv_xiaocai); + tvBowl = (TextView) findViewById(R.id.tv_bowl); + + btnAbout.setOnClickListener(this); + btnContact.setOnClickListener(this); + btnJoin.setOnClickListener(this); + + tvMe.setOnClickListener(this); + tvXiaoCai.setOnClickListener(this); + tvBowl.setOnClickListener(this); + } + + //获得当前用户User类型 + public void getCurUser(String username) { + BmobQuery query = new BmobQuery(); + query.addWhereEqualTo("username", username); + query.findObjects(this, new FindListener() { + @Override + public void onSuccess(List object) { + if(object.size()==1) + user = object.get(0); + else + user = null; + loadData(); + //toast("查询到:" + object.size()); + } + + @Override + public void onError(int arg0, String arg1) { + toast("获取信息失败"); + } + }); + } + + //加载查询到的用户数据 + public void loadData() { + //toast("加载数据中..."); + tvUserName.setText(user.getUsername()); + tvSchool.setText(user.getSchool()); + tvCademy.setText(user.getCademy()); + tvDorPart.setText(user.getDorPart()); + tvDorNum.setText(user.getDorNum()); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_share: + Intent toShare = new Intent(Intent.ACTION_SEND); + toShare.setType("text/plain"); + toShare.putExtra(Intent.EXTRA_SUBJECT, "分享"); + toShare.putExtra(Intent.EXTRA_TEXT, "在这里" +"\n" + "针对NUDT三号狱的在这里测试版上线了,赶紧下载体验吧" + + "http://xiaocai.bmob.cn"); + startActivity(Intent.createChooser(toShare, "分享到")); + break; + case R.id.tv_me: + startAnim(R.id.tv_me); + break; + case R.id.tv_xiaocai: + startAnim(R.id.tv_xiaocai); + break; + case R.id.tv_bowl: + startAnim(R.id.tv_bowl); + break; + default: + Intent toAbout = new Intent(OldMineActivity.this, AboutActivity.class); + startActivity(toAbout); + break; + } + } + + //点击文字动画 + private void startAnim(int id){ + Animation scale = AnimationUtils.loadAnimation(this, R.anim.shake); + if(id == R.id.tv_me) + tvMe.startAnimation(scale); + else if(id == R.id.tv_xiaocai) + tvXiaoCai.startAnimation(scale); + else if(id == R.id.tv_bowl) + tvBowl.startAnimation(scale); + else { } + } + + private void toast(String toast) { + Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); + } + + + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/AutoScrollViewPager$MyHandler.class b/代码/在这里3.0/bin/classes/com/stone/ui/AutoScrollViewPager$MyHandler.class new file mode 100644 index 0000000..1e096e1 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/AutoScrollViewPager$MyHandler.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/AutoScrollViewPager.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/ui/AutoScrollViewPager.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..0d542cd --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/ui/AutoScrollViewPager.java~remotes_origin_zhaozaichun @@ -0,0 +1,337 @@ +package com.stone.ui; + +import java.lang.reflect.Field; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.animation.Interpolator; + +/** + * Auto Scroll View Pager + *
    + * Basic Setting and Usage + *
  • {@link #startAutoScroll()} start auto scroll, or {@link #startAutoScroll(int)} start auto scroll delayed
  • + *
  • {@link #stopAutoScroll()} stop auto scroll
  • + *
  • {@link #setInterval(long)} set auto scroll time in milliseconds, default is {@link #DEFAULT_INTERVAL}
  • + *
+ *
    + * Advanced Settings and Usage + *
  • {@link #setDirection(int)} set auto scroll direction
  • + *
  • {@link #setCycle(boolean)} set whether automatic cycle when auto scroll reaching the last or first item, default + * is true
  • + *
  • {@link #setSlideBorderMode(int)} set how to process when sliding at the last or first item
  • + *
  • {@link #setStopScrollWhenTouch(boolean)} set whether stop auto scroll when touching, default is true
  • + *
+ * + * @author Trinea 2013-12-30 + */ +public class AutoScrollViewPager extends ViewPager { + public static final int DEFAULT_INTERVAL = 1500; + + public static final int LEFT = 0; + public static final int RIGHT = 1; + + /** do nothing when sliding at the last or first item **/ + public static final int SLIDE_BORDER_MODE_NONE = 0; + /** cycle when sliding at the last or first item **/ + public static final int SLIDE_BORDER_MODE_CYCLE = 1; + /** deliver event to parent when sliding at the last or first item **/ + public static final int SLIDE_BORDER_MODE_TO_PARENT = 2; + + /** auto scroll time in milliseconds, default is {@link #DEFAULT_INTERVAL} **/ + private long interval = DEFAULT_INTERVAL; + /** auto scroll direction, default is {@link #RIGHT} **/ + private int direction = RIGHT; + /** whether automatic cycle when auto scroll reaching the last or first item, default is true **/ + private boolean isCycle = true; + /** whether stop auto scroll when touching, default is true **/ + private boolean stopScrollWhenTouch = true; + /** how to process when sliding at the last or first item, default is {@link #SLIDE_BORDER_MODE_NONE} **/ + private int slideBorderMode = SLIDE_BORDER_MODE_NONE; + /** whether animating when auto scroll at the last or first item **/ + private boolean isBorderAnimation = true; + + private Handler handler; + private boolean isAutoScroll = false; + private boolean isStopByTouch = false; + private float touchX = 0f, downX = 0f; + private CustomDurationScroller scroller = null; + + public static final int SCROLL_WHAT = 0; + + public AutoScrollViewPager(Context paramContext){ + super(paramContext); + init(); + } + + public AutoScrollViewPager(Context paramContext, AttributeSet paramAttributeSet){ + super(paramContext, paramAttributeSet); + init(); + } + + private void init() { + handler = new MyHandler(); + setViewPagerScroller(); + } + + /** + * start auto scroll, first scroll delay time is {@link #getInterval()} + */ + public void startAutoScroll() { + isAutoScroll = true; + sendScrollMessage(interval); + } + + /** + * start auto scroll + * + * @param delayTimeInMills first scroll delay time + */ + public void startAutoScroll(int delayTimeInMills) { + isAutoScroll = true; + sendScrollMessage(delayTimeInMills); + } + + /** + * stop auto scroll + */ + public void stopAutoScroll() { + isAutoScroll = false; + handler.removeMessages(SCROLL_WHAT); + } + + /** + * set the factor by which the duration of sliding animation will change + */ + public void setScrollDurationFactor(double scrollFactor) { + scroller.setScrollDurationFactor(scrollFactor); + } + + private void sendScrollMessage(long delayTimeInMills) { + /** remove messages before, keeps one message is running at most **/ + handler.removeMessages(SCROLL_WHAT); + handler.sendEmptyMessageDelayed(SCROLL_WHAT, delayTimeInMills); + } + + /** + * set ViewPager scroller to change animation duration when sliding + */ + private void setViewPagerScroller() { + try { + Field scrollerField = ViewPager.class.getDeclaredField("mScroller"); + scrollerField.setAccessible(true); + Field interpolatorField = ViewPager.class.getDeclaredField("sInterpolator"); + interpolatorField.setAccessible(true); + + scroller = new CustomDurationScroller(getContext(), (Interpolator)interpolatorField.get(null)); + scrollerField.set(this, scroller); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * scroll only once + */ + public void scrollOnce() { + PagerAdapter adapter = getAdapter(); + int currentItem = getCurrentItem(); + int totalCount; + if (adapter == null || (totalCount = adapter.getCount()) <= 1) { + return; + } + + int nextItem = (direction == LEFT) ? --currentItem : ++currentItem; + if (nextItem < 0) { + if (isCycle) { + setCurrentItem(totalCount - 1, isBorderAnimation); + } + } else if (nextItem == totalCount) { + if (isCycle) { + setCurrentItem(0, isBorderAnimation); + } + } else { + setCurrentItem(nextItem, true); + } + } + + /** + *
    + * if stopScrollWhenTouch is true + *
  • if event is down, stop auto scroll.
  • + *
  • if event is up, start auto scroll again.
  • + *
+ */ + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (stopScrollWhenTouch) { + if (ev.getAction() == MotionEvent.ACTION_DOWN && isAutoScroll) { + isStopByTouch = true; + stopAutoScroll(); + } else if (ev.getAction() == MotionEvent.ACTION_UP && isStopByTouch) { + startAutoScroll(); + } + } + + if (slideBorderMode == SLIDE_BORDER_MODE_TO_PARENT || slideBorderMode == SLIDE_BORDER_MODE_CYCLE) { + touchX = ev.getX(); + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + downX = touchX; + } + int currentItem = getCurrentItem(); + PagerAdapter adapter = getAdapter(); + int pageCount = adapter == null ? 0 : adapter.getCount(); + /** + * current index is first one and slide to right or current index is last one and slide to left.
+ * if slide border mode is to parent, then requestDisallowInterceptTouchEvent false.
+ * else scroll to last one when current item is first one, scroll to first one when current item is last + * one. + */ + if ((currentItem == 0 && downX <= touchX) || (currentItem == pageCount - 1 && downX >= touchX)) { + if (slideBorderMode == SLIDE_BORDER_MODE_TO_PARENT) { + getParent().requestDisallowInterceptTouchEvent(false); + } else { + if (pageCount > 1) { + setCurrentItem(pageCount - currentItem - 1, isBorderAnimation); + } + getParent().requestDisallowInterceptTouchEvent(true); + } + return super.onTouchEvent(ev); + } + } + getParent().requestDisallowInterceptTouchEvent(true); + return super.onTouchEvent(ev); + } + + private class MyHandler extends Handler { + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + + switch (msg.what) { + case SCROLL_WHAT: + scrollOnce(); + sendScrollMessage(interval); + default: + break; + } + } + } + + /** + * get auto scroll time in milliseconds, default is {@link #DEFAULT_INTERVAL} + * + * @return the interval + */ + public long getInterval() { + return interval; + } + + /** + * set auto scroll time in milliseconds, default is {@link #DEFAULT_INTERVAL} + * + * @param interval the interval to set + */ + public void setInterval(long interval) { + this.interval = interval; + } + + /** + * get auto scroll direction + * + * @return {@link #LEFT} or {@link #RIGHT}, default is {@link #RIGHT} + */ + public int getDirection() { + return (direction == LEFT) ? LEFT : RIGHT; + } + + /** + * set auto scroll direction + * + * @param direction {@link #LEFT} or {@link #RIGHT}, default is {@link #RIGHT} + */ + public void setDirection(int direction) { + this.direction = direction; + } + + /** + * whether automatic cycle when auto scroll reaching the last or first item, default is true + * + * @return the isCycle + */ + public boolean isCycle() { + return isCycle; + } + + /** + * set whether automatic cycle when auto scroll reaching the last or first item, default is true + * + * @param isCycle the isCycle to set + */ + public void setCycle(boolean isCycle) { + this.isCycle = isCycle; + } + + /** + * whether stop auto scroll when touching, default is true + * + * @return the stopScrollWhenTouch + */ + public boolean isStopScrollWhenTouch() { + return stopScrollWhenTouch; + } + + /** + * set whether stop auto scroll when touching, default is true + * + * @param stopScrollWhenTouch + */ + public void setStopScrollWhenTouch(boolean stopScrollWhenTouch) { + this.stopScrollWhenTouch = stopScrollWhenTouch; + } + + /** + * get how to process when sliding at the last or first item + * + * @return the slideBorderMode {@link #SLIDE_BORDER_MODE_NONE}, {@link #SLIDE_BORDER_MODE_TO_PARENT}, + * {@link #SLIDE_BORDER_MODE_CYCLE}, default is {@link #SLIDE_BORDER_MODE_NONE} + */ + public int getSlideBorderMode() { + return slideBorderMode; + } + + /** + * set how to process when sliding at the last or first item + * + * @param slideBorderMode {@link #SLIDE_BORDER_MODE_NONE}, {@link #SLIDE_BORDER_MODE_TO_PARENT}, + * {@link #SLIDE_BORDER_MODE_CYCLE}, default is {@link #SLIDE_BORDER_MODE_NONE} + */ + public void setSlideBorderMode(int slideBorderMode) { + this.slideBorderMode = slideBorderMode; + } + + /** + * whether animating when auto scroll at the last or first item, default is true + * + * @return + */ + public boolean isBorderAnimation() { + return isBorderAnimation; + } + + /** + * set whether animating when auto scroll at the last or first item, default is true + * + * @param isBorderAnimation + */ + public void setBorderAnimation(boolean isBorderAnimation) { + this.isBorderAnimation = isBorderAnimation; + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/CustomDurationScroller.class b/代码/在这里3.0/bin/classes/com/stone/ui/CustomDurationScroller.class new file mode 100644 index 0000000..04ced10 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/CustomDurationScroller.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/CustomDurationScroller.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/ui/CustomDurationScroller.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..6155603 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/ui/CustomDurationScroller.java~remotes_origin_zhaozaichun @@ -0,0 +1,47 @@ +package com.stone.ui; + +import android.content.Context; +import android.view.animation.Interpolator; +import android.widget.Scroller; + + +/** + * CustomDurationScroller + * + * @author Trinea 2014-3-2 + */ +public class CustomDurationScroller extends Scroller { + private double scrollFactor = 2; + + public CustomDurationScroller(Context context){ + super(context); + } + + public CustomDurationScroller(Context context, Interpolator interpolator){ + super(context, interpolator); + } + + /** + * not exist in android 2.3 + * + * @param context + * @param interpolator + * @param flywheel + */ + // @SuppressLint("NewApi") + // public CustomDurationScroller(Context context, Interpolator interpolator, boolean flywheel){ + // super(context, interpolator, flywheel); + // } + + /** + * Set the factor by which the duration will change + */ + public void setScrollDurationFactor(double scrollFactor) { + this.scrollFactor = scrollFactor; + } + + @Override + public void startScroll(int startX, int startY, int dx, int dy, int duration) { + super.startScroll(startX, startY, dx, dy, (int)(duration * scrollFactor)); + } +} diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$1.class b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$1.class new file mode 100644 index 0000000..2650c7e Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$2.class b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$2.class new file mode 100644 index 0000000..82c0e7b Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$2.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$DateTimeListener.class b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$DateTimeListener.class new file mode 100644 index 0000000..ecd71fa Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil$DateTimeListener.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.class b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.class index a729aad..84f3de9 100644 Binary files a/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.class and b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..6ba2bfe --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/ui/DateTimePickDialogUtil.java~remotes_origin_zhaozaichun @@ -0,0 +1,188 @@ +package com.stone.ui; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + +import com.stone.shop.R; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.widget.DatePicker; +import android.widget.DatePicker.OnDateChangedListener; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TimePicker; +import android.widget.TimePicker.OnTimeChangedListener; + +/** + * 日期时间选择控件 使用方法: private EditText inputDate;//需要设置的日期时间文本编辑框 private String + * initDateTime="2012年9月3日 14:44",//初始日期时间值 在点击事件中使用: + * inputDate.setOnClickListener(new OnClickListener() { + * + * @Override public void onClick(View v) { DateTimePickDialogUtil + * dateTimePicKDialog=new + * DateTimePickDialogUtil(SinvestigateActivity.this,initDateTime); + * dateTimePicKDialog.dateTimePicKDialog(inputDate); + * + * } }); + * + * @author + */ +public class DateTimePickDialogUtil implements OnDateChangedListener, OnTimeChangedListener { + private DatePicker datePicker; + private TimePicker timePicker; + private AlertDialog ad; + private String dateTime; + private String initDateTime; + private Activity activity; + private DateTimeListener dateTimeListener; + + /** + * 日期时间弹出选择框构造函数 + * + * @param activity + * :调用的父activity + * @param initDateTime + * 初始日期时间值,作为弹出窗口的标题和日期时间初始值 + */ + public DateTimePickDialogUtil(Activity activity, String initDateTime) { + this.activity = activity; + this.initDateTime = initDateTime; + + } + + public void init(DatePicker datePicker, TimePicker timePicker) { + Calendar calendar = Calendar.getInstance(); + if (!(null == initDateTime || "".equals(initDateTime))) { + calendar = this.getCalendarByInintData(initDateTime); + } else { + initDateTime = calendar.get(Calendar.YEAR) + "年" + calendar.get(Calendar.MONTH) + "月" + + calendar.get(Calendar.DAY_OF_MONTH) + "日 " + calendar.get(Calendar.HOUR_OF_DAY) + ":" + + calendar.get(Calendar.MINUTE); + } + + datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), + this); + timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); + timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); + } + + /** + * 弹出日期时间选择框方法 + * + * @param inputDate + * :为需要设置的日期时间文本编辑框 + * @return + */ + public AlertDialog dateTimePicKDialog(final DateTimeListener dateTimeListener) { + LinearLayout dateTimeLayout = (LinearLayout) activity.getLayoutInflater().inflate(R.layout.common_datetime, + null); + datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker); + timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker); + init(datePicker, timePicker); + timePicker.setIs24HourView(true); + timePicker.setOnTimeChangedListener(this); + + ad = new AlertDialog.Builder(activity).setTitle(initDateTime).setView(dateTimeLayout) + .setPositiveButton("设置", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + + if (dateTimeListener != null) { + dateTimeListener.onDateTimeChane(dateTime); + } + } + }).setNegativeButton("取消", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + + } + }).show(); + + onDateChanged(null, 0, 0, 0); + return ad; + } + + public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { + onDateChanged(null, 0, 0, 0); + } + + public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { + // 获得日历实例 + Calendar calendar = Calendar.getInstance(); + + calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), + timePicker.getCurrentHour(), timePicker.getCurrentMinute()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm"); + + dateTime = sdf.format(calendar.getTime()); + ad.setTitle(dateTime); + } + + /** + * 实现将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar + * + * @param initDateTime + * 初始日期时间值 字符串型 + * @return Calendar + */ + private Calendar getCalendarByInintData(String initDateTime) { + Calendar calendar = Calendar.getInstance(); + + // 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒 + String date = spliteString(initDateTime, "日", "index", "front"); // 日期 + String time = spliteString(initDateTime, "日", "index", "back"); // 时间 + + String yearStr = spliteString(date, "年", "index", "front"); // 年份 + String monthAndDay = spliteString(date, "年", "index", "back"); // 月日 + + String monthStr = spliteString(monthAndDay, "月", "index", "front"); // 月 + String dayStr = spliteString(monthAndDay, "月", "index", "back"); // 日 + + String hourStr = spliteString(time, ":", "index", "front"); // 时 + String minuteStr = spliteString(time, ":", "index", "back"); // 分 + + int currentYear = Integer.valueOf(yearStr.trim()).intValue(); + int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1; + int currentDay = Integer.valueOf(dayStr.trim()).intValue(); + int currentHour = Integer.valueOf(hourStr.trim()).intValue(); + int currentMinute = Integer.valueOf(minuteStr.trim()).intValue(); + + calendar.set(currentYear, currentMonth, currentDay, currentHour, currentMinute); + return calendar; + } + + /** + * 截取子串 + * + * @param srcStr + * 源串 + * @param pattern + * 匹配模式 + * @param indexOrLast + * @param frontOrBack + * @return + */ + public static String spliteString(String srcStr, String pattern, String indexOrLast, String frontOrBack) { + String result = ""; + int loc = -1; + if (indexOrLast.equalsIgnoreCase("index")) { + loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置 + } else { + loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置 + } + if (frontOrBack.equalsIgnoreCase("front")) { + if (loc != -1) + result = srcStr.substring(0, loc); // 截取子串 + } else { + if (loc != -1) + result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串 + } + return result; + } + + public interface DateTimeListener { + + void onDateTimeChane(String dateTime); + + } +} diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DialogOrder$OrderDialogListener.class b/代码/在这里3.0/bin/classes/com/stone/ui/DialogOrder$OrderDialogListener.class new file mode 100644 index 0000000..dbb56fc Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/DialogOrder$OrderDialogListener.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/DialogOrder.class b/代码/在这里3.0/bin/classes/com/stone/ui/DialogOrder.class new file mode 100644 index 0000000..8c9ef50 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/DialogOrder.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/ListScrollView.class b/代码/在这里3.0/bin/classes/com/stone/ui/ListScrollView.class new file mode 100644 index 0000000..a1467e5 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/ListScrollView.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/MyGridView.class b/代码/在这里3.0/bin/classes/com/stone/ui/MyGridView.class new file mode 100644 index 0000000..7aaf8ed Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/ui/MyGridView.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/ui/ViewPagerCompat.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/ui/ViewPagerCompat.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..4d184b3 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/ui/ViewPagerCompat.java~remotes_origin_zhaozaichun @@ -0,0 +1,67 @@ +package com.stone.ui; + +import android.content.Context; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** + * 商铺详情页--ViewPager的加强类,主要是为了解决滑动冲突的问题。不然的话, + * 在ViewPager内部加入ListView等可滑动控件,两者之间会产生干扰。 + * @author Stone + * {@link} http://blog.csdn.net/singwhatiwanna/article/details/17201587 + */ +//测试自动分析 +public class ViewPagerCompat extends ViewPager { + // mViewTouchMode表示ViewPager是否全权控制滑动事件,默认为false,即不控制 + private boolean mViewTouchMode = false; + + public ViewPagerCompat(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void setViewTouchMode(boolean b) { + if (b && !isFakeDragging()) { + // 全权控制滑动事件 + beginFakeDrag(); + } else if (!b && isFakeDragging()) { + // 终止控制滑动事件 + endFakeDrag(); + } + mViewTouchMode = b; + } + + /** + * 在mViewTouchMode为true的时候,ViewPager不拦截点击事件,点击事件将由子View处理 + */ + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + if (mViewTouchMode) { + return false; + } + return super.onInterceptTouchEvent(event); + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + try { + return super.onTouchEvent(ev); + } catch (Exception e) { + return false; + } + } + + /** + * 在mViewTouchMode为true或者滑动方向不是左右的时候,ViewPager将放弃控制点击事件, + * 这样做有利于在ViewPager中加入ListView等可以滑动的控件,否则两者之间的滑动将会有冲突 + */ + @Override + public boolean arrowScroll(int direction) { + if (mViewTouchMode) + return false; + if (direction != FOCUS_LEFT && direction != FOCUS_RIGHT) + return false; + return super.arrowScroll(direction); + } + +} diff --git a/代码/在这里3.0/bin/classes/com/stone/util/ActivityUtil.class b/代码/在这里3.0/bin/classes/com/stone/util/ActivityUtil.class new file mode 100644 index 0000000..470a667 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/util/ActivityUtil.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/util/Util$1.class b/代码/在这里3.0/bin/classes/com/stone/util/Util$1.class new file mode 100644 index 0000000..9647a98 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/util/Util$1.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/util/Util.class b/代码/在这里3.0/bin/classes/com/stone/util/Util.class new file mode 100644 index 0000000..21a1a80 Binary files /dev/null and b/代码/在这里3.0/bin/classes/com/stone/util/Util.class differ diff --git a/代码/在这里3.0/bin/classes/com/stone/util/Util.java~remotes_origin_zhaozaichun b/代码/在这里3.0/bin/classes/com/stone/util/Util.java~remotes_origin_zhaozaichun new file mode 100644 index 0000000..653e1f9 --- /dev/null +++ b/代码/在这里3.0/bin/classes/com/stone/util/Util.java~remotes_origin_zhaozaichun @@ -0,0 +1,756 @@ +package com.stone.util; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.RandomAccessFile; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.ContentUris; +import android.content.Context; +import android.content.DialogInterface; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Bitmap.CompressFormat; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.provider.MediaStore; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Toast; +import junit.framework.Assert; + +/** + * 工具类 + * + * @date 2014-5-9 + * @author Stone + */ +public class Util { + + /** + * 判断电话号码是否有效 + * + * @param phoneNumber + * @return true 有效 / false 无效 + */ + public static boolean isPhoneNumberValid(String phoneNumber) { + + boolean isValid = false; + + String expression = "((^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}\\d{1}-?\\d{8}$)|(^0[3-9] {1}\\d{2}-?\\d{7,8}$)|(^0[1,2]{1}\\d{1}-?\\d{8}-(\\d{1,4})$)|(^0[3-9]{1}\\d{2}-? \\d{7,8}-(\\d{1,4})$))"; + CharSequence inputStr = phoneNumber; + + Pattern pattern = Pattern.compile(expression); + Matcher matcher = pattern.matcher(inputStr); + + if (matcher.matches()) { + isValid = true; + } + return isValid; + } + + // 判断网络是否连接 + public static boolean isNetworkConnected(Context context) { + if (context != null) { + ConnectivityManager mConnectivityManager = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo mNetworkInfo = mConnectivityManager + .getActiveNetworkInfo(); + if (mNetworkInfo != null) { + return mNetworkInfo.isAvailable(); + } + } + return false; + } + +private static final String TAG = "SDK_Sample.Util"; + + private static Dialog mProgressDialog; + private static Toast mToast; + + /* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。 + * @param src byte[] data + * @return hex string + */ + public static String bytesToHexString(byte[] src){ + StringBuilder stringBuilder = new StringBuilder(""); + if (src == null || src.length <= 0) { + return null; + } + for (int i = 0; i < src.length; i++) { + int v = src[i] & 0xFF; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + stringBuilder.append(0); + } + stringBuilder.append(hv); + } + return stringBuilder.toString(); + } + /** + * Convert hex string to byte[] + * @param hexString the hex string + * @return byte[] + */ + public static byte[] hexStringToBytes(String hexString) { + if (hexString == null || hexString.equals("")) { + return null; + } + hexString = hexString.toUpperCase(); + int length = hexString.length() / 2; + char[] hexChars = hexString.toCharArray(); + byte[] d = new byte[length]; + for (int i = 0; i < length; i++) { + int pos = i * 2; + d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); + } + return d; + } + /** + * Convert char to byte + * @param c char + * @return byte + */ + private static byte charToByte(char c) { + return (byte) "0123456789ABCDEF".indexOf(c); + } + + /* + * 16进制数字字符集 + */ + private static String hexString="0123456789ABCDEF"; + /* + * 将字符串编码成16进制数字,适用于所有字符(包括中文) + */ + public static String toHexString(String str) + { +//根据默认编码获取字节数组 + byte[] bytes = null; + try { + bytes = str.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + if (bytes == null) return null; + StringBuilder sb=new StringBuilder(bytes.length*2); +//将字节数组中每个字节拆解成2位16进制整数 + for(int i=0;i>4)); + sb.append(hexString.charAt((bytes[i]&0x0f)>>0)); + } + return sb.toString(); + } + + //转换十六进制编码为字符串 + public static String hexToString(String s) + { + if("0x".equals(s.substring(0, 2))) + { + s =s.substring(2); + } + byte[] baKeyword = new byte[s.length()/2]; + for(int i = 0; i < baKeyword.length; i++) + { + try + { + baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16)); + } + catch(Exception e) + { + e.printStackTrace(); + } + } + + try + { + s = new String(baKeyword, "utf-8");//UTF-16le:Not + } + catch (Exception e1) + { + e1.printStackTrace(); + } + return s; + } + + public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + bmp.compress(CompressFormat.PNG, 100, output); + if (needRecycle) { + bmp.recycle(); + } + + byte[] result = output.toByteArray(); + try { + output.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return result; + } + + public static byte[] getHtmlByteArray(final String url) { + URL htmlUrl = null; + InputStream inStream = null; + try { + htmlUrl = new URL(url); + URLConnection connection = htmlUrl.openConnection(); + HttpURLConnection httpConnection = (HttpURLConnection)connection; + int responseCode = httpConnection.getResponseCode(); + if(responseCode == HttpURLConnection.HTTP_OK){ + inStream = httpConnection.getInputStream(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + byte[] data = inputStreamToByte(inStream); + + return data; + } + + public static byte[] inputStreamToByte(InputStream is) { + try{ + ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); + int ch; + while ((ch = is.read()) != -1) { + bytestream.write(ch); + } + byte imgdata[] = bytestream.toByteArray(); + bytestream.close(); + return imgdata; + }catch(Exception e){ + e.printStackTrace(); + } + + return null; + } + + public static byte[] readFromFile(String fileName, int offset, int len) { + if (fileName == null) { + return null; + } + + File file = new File(fileName); + if (!file.exists()) { + Log.i(TAG, "readFromFile: file not found"); + return null; + } + + if (len == -1) { + len = (int) file.length(); + } + + Log.d(TAG, "readFromFile : offset = " + offset + " len = " + len + " offset + len = " + (offset + len)); + + if(offset <0){ + Log.e(TAG, "readFromFile invalid offset:" + offset); + return null; + } + if(len <=0 ){ + Log.e(TAG, "readFromFile invalid len:" + len); + return null; + } + if(offset + len > (int) file.length()){ + Log.e(TAG, "readFromFile invalid file len:" + file.length()); + return null; + } + + byte[] b = null; + try { + RandomAccessFile in = new RandomAccessFile(fileName, "r"); + b = new byte[len]; + in.seek(offset); + in.readFully(b); + in.close(); + + } catch (Exception e) { + Log.e(TAG, "readFromFile : errMsg = " + e.getMessage()); + e.printStackTrace(); + } + return b; + } + + public static int computeSampleSize(BitmapFactory.Options options, + + int minSideLength, int maxNumOfPixels) { + + int initialSize = computeInitialSampleSize(options, minSideLength, + + maxNumOfPixels); + + int roundedSize; + + if (initialSize <= 8) { + + roundedSize = 1; + + while (roundedSize < initialSize) { + + roundedSize <<= 1; + + } + + } else { + + roundedSize = (initialSize + 7) / 8 * 8; + + } + + return roundedSize; + } + + private static int computeInitialSampleSize(BitmapFactory.Options options, + + int minSideLength, int maxNumOfPixels) { + + double w = options.outWidth; + + double h = options.outHeight; + + int lowerBound = (maxNumOfPixels == -1) ? 1 : + + (int) Math.ceil(Math.sqrt(w * h / maxNumOfPixels)); + + int upperBound = (minSideLength == -1) ? 128 : + + (int) Math.min(Math.floor(w / minSideLength), + + Math.floor(h / minSideLength)); + + if (upperBound < lowerBound) { + + // return the larger one when there is no overlapping zone. + + return lowerBound; + + } + + if ((maxNumOfPixels == -1) && + + (minSideLength == -1)) { + + return 1; + + } else if (minSideLength == -1) { + + return lowerBound; + + } else { + + return upperBound; + + } + } + + /** + * 以最省内存的方式读取图片 + */ + public static Bitmap readBitmap(final String path){ + try{ + FileInputStream stream = new FileInputStream(new File(path+"test.jpg")); + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inSampleSize = 8; + opts.inPurgeable=true; + opts.inInputShareable=true; + Bitmap bitmap = BitmapFactory.decodeStream(stream , null, opts); + return bitmap; + } catch (OutOfMemoryError e) { + return null; + } catch (Exception e) { + return null; + } + } + + private static final int MAX_DECODE_PICTURE_SIZE = 1920 * 1440; + public static Bitmap extractThumbNail(final String path, final int height, final int width, final boolean crop) { + Assert.assertTrue(path != null && !path.equals("") && height > 0 && width > 0); + + BitmapFactory.Options options = new BitmapFactory.Options(); + + try { + options.inJustDecodeBounds = true; + Bitmap tmp = BitmapFactory.decodeFile(path, options); + if (tmp != null) { + tmp.recycle(); + tmp = null; + } + + Log.d(TAG, "extractThumbNail: round=" + width + "x" + height + ", crop=" + crop); + final double beY = options.outHeight * 1.0 / height; + final double beX = options.outWidth * 1.0 / width; + Log.d(TAG, "extractThumbNail: extract beX = " + beX + ", beY = " + beY); + options.inSampleSize = (int) (crop ? (beY > beX ? beX : beY) : (beY < beX ? beX : beY)); + if (options.inSampleSize <= 1) { + options.inSampleSize = 1; + } + + // NOTE: out of memory error + while (options.outHeight * options.outWidth / options.inSampleSize > MAX_DECODE_PICTURE_SIZE) { + options.inSampleSize++; + } + + int newHeight = height; + int newWidth = width; + if (crop) { + if (beY > beX) { + newHeight = (int) (newWidth * 1.0 * options.outHeight / options.outWidth); + } else { + newWidth = (int) (newHeight * 1.0 * options.outWidth / options.outHeight); + } + } else { + if (beY < beX) { + newHeight = (int) (newWidth * 1.0 * options.outHeight / options.outWidth); + } else { + newWidth = (int) (newHeight * 1.0 * options.outWidth / options.outHeight); + } + } + + options.inJustDecodeBounds = false; + + Log.i(TAG, "bitmap required size=" + newWidth + "x" + newHeight + ", orig=" + options.outWidth + "x" + options.outHeight + ", sample=" + options.inSampleSize); + Bitmap bm = BitmapFactory.decodeFile(path, options); + if (bm == null) { + Log.e(TAG, "bitmap decode failed"); + return null; + } + + Log.i(TAG, "bitmap decoded size=" + bm.getWidth() + "x" + bm.getHeight()); + final Bitmap scale = Bitmap.createScaledBitmap(bm, newWidth, newHeight, true); + if (scale != null) { + bm.recycle(); + bm = scale; + } + + if (crop) { + final Bitmap cropped = Bitmap.createBitmap(bm, (bm.getWidth() - width) >> 1, (bm.getHeight() - height) >> 1, width, height); + if (cropped == null) { + return bm; + } + + bm.recycle(); + bm = cropped; + Log.i(TAG, "bitmap croped size=" + bm.getWidth() + "x" + bm.getHeight()); + } + return bm; + + } catch (final OutOfMemoryError e) { + Log.e(TAG, "decode bitmap failed: " + e.getMessage()); + options = null; + } + + return null; + } + + public static final void showResultDialog(Context context, String msg, + String title) { + if(msg == null) return; + String rmsg = msg.replace(",", "\n"); + Log.d("Util", rmsg); + new AlertDialog.Builder(context).setTitle(title).setMessage(rmsg) + .setNegativeButton("知道了", null).create().show(); + } + + public static final void showProgressDialog(Context context, String title, + String message) { + dismissDialog(); + if (TextUtils.isEmpty(title)) { + title = "请稍候"; + } + if (TextUtils.isEmpty(message)) { + message = "正在加载..."; + } + mProgressDialog = ProgressDialog.show(context, title, message); + } + + public static AlertDialog showConfirmCancelDialog(Context context, + String title, String message, + DialogInterface.OnClickListener posListener) { + AlertDialog dlg = new AlertDialog.Builder(context).setMessage(message) + .setPositiveButton("确认", posListener) + .setNegativeButton("取消", null).create(); + dlg.setCanceledOnTouchOutside(false); + dlg.show(); + return dlg; + } + + public static final void dismissDialog() { + if (mProgressDialog != null) { + mProgressDialog.dismiss(); + mProgressDialog = null; + } + } + + /** + * 打印消息并且用Toast显示消息 + * + * @param activity + * @param message + * @param logLevel + * 填d, w, e分别代表debug, warn, error; 默认是debug + */ + public static final void toastMessage(final Activity activity, + final String message, String logLevel) { + if ("w".equals(logLevel)) { + Log.w("sdkDemo", message); + } else if ("e".equals(logLevel)) { + Log.e("sdkDemo", message); + } else { + Log.d("sdkDemo", message); + } + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + // TODO Auto-generated method stub + if (mToast != null) { + mToast.cancel(); + mToast = null; + } + mToast = Toast.makeText(activity, message, Toast.LENGTH_SHORT); + mToast.show(); + } + }); + } + + /** + * 打印消息并且用Toast显示消息 + * + * @param activity + * @param message + * @param logLevel + * 填d, w, e分别代表debug, warn, error; 默认是debug + */ + public static final void toastMessage(final Activity activity, + final String message) { + toastMessage(activity, message, null); + } + + /** + * 根据一个网络连接(String)获取bitmap图像 + * + * @param imageUri + * @return + * @throws MalformedURLException + */ + public static Bitmap getbitmap(String imageUri) { + Log.v(TAG, "getbitmap:" + imageUri); + // 显示网络上的图片 + Bitmap bitmap = null; + try { + URL myFileUrl = new URL(imageUri); + HttpURLConnection conn = (HttpURLConnection) myFileUrl + .openConnection(); + conn.setDoInput(true); + conn.connect(); + InputStream is = conn.getInputStream(); + bitmap = BitmapFactory.decodeStream(is); + is.close(); + + Log.v(TAG, "image download finished." + imageUri); + } catch (OutOfMemoryError e) { + e.printStackTrace(); + bitmap = null; + } catch (IOException e) { + e.printStackTrace(); + Log.v(TAG, "getbitmap bmp fail---"); + bitmap = null; + } + return bitmap; + } + + public static void release() { + mProgressDialog = null; + mToast = null; + } + + // ========= + // =通过URI获取本地图片的path + // =兼容android 5.0 + // ========== + + public static String ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT"; + public static int Build_VERSION_KITKAT = 19; + public static String getPath(final Context context, final Uri uri) { + + final boolean isKitKat = Build.VERSION.SDK_INT >= 19; + + // DocumentProvider + if (isKitKat && isDocumentUri(context, uri)) { + // ExternalStorageProvider + if (isExternalStorageDocument(uri)) { + final String docId = getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + if ("primary".equalsIgnoreCase(type)) { + return Environment.getExternalStorageDirectory() + "/" + split[1]; + } + + } + // DownloadsProvider + else if (isDownloadsDocument(uri)) { + + final String id = getDocumentId(uri); + final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), + Long.valueOf(id)); + + return getDataColumn(context, contentUri, null, null); + } + // MediaProvider + else if (isMediaDocument(uri)) { + final String docId = getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } else if ("video".equals(type)) { + contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + } else if ("audio".equals(type)) { + contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + } + + final String selection = "_id=?"; + final String[] selectionArgs = new String[] { split[1] }; + + return getDataColumn(context, contentUri, selection, selectionArgs); + } + } + // MediaStore (and general) + else if ("content".equalsIgnoreCase(uri.getScheme())) { + + // Return the remote address + if (isGooglePhotosUri(uri)) + return uri.getLastPathSegment(); + + return getDataColumn(context, uri, null, null); + } + // File + else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + + return null; + } + + private static final String PATH_DOCUMENT = "document"; + + /** + * Test if the given URI represents a {@link Document} backed by a + * {@link DocumentsProvider}. + */ + private static boolean isDocumentUri(Context context, Uri uri) { + final List paths = uri.getPathSegments(); + if (paths.size() < 2) { + return false; + } + if (!PATH_DOCUMENT.equals(paths.get(0))) { + return false; + } + + return true; + } + + private static String getDocumentId(Uri documentUri) { + final List paths = documentUri.getPathSegments(); + if (paths.size() < 2) { + throw new IllegalArgumentException("Not a document: " + documentUri); + } + if (!PATH_DOCUMENT.equals(paths.get(0))) { + throw new IllegalArgumentException("Not a document: " + documentUri); + } + return paths.get(1); + } + + /** + * Get the value of the data column for this Uri. This is useful for + * MediaStore Uris, and other file-based ContentProviders. + * + * @param context + * The context. + * @param uri + * The Uri to query. + * @param selection + * (Optional) Filter used in the query. + * @param selectionArgs + * (Optional) Selection arguments used in the query. + * [url=home.php?mod=space&uid=7300]@return[/url] The value of + * the _data column, which is typically a file path. + */ + public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + + Cursor cursor = null; + final String column = "_data"; + final String[] projection = { column }; + + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); + if (cursor != null && cursor.moveToFirst()) { + final int index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(index); + } + } finally { + if (cursor != null) + cursor.close(); + } + return null; + } + + /** + * @param uri + * The Uri to check. + * @return Whether the Uri authority is ExternalStorageProvider. + */ + public static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + /** + * @param uri + * The Uri to check. + * @return Whether the Uri authority is DownloadsProvider. + */ + public static boolean isDownloadsDocument(Uri uri) { + return "com.android.providers.downloads.documents".equals(uri.getAuthority()); + } + + /** + * @param uri + * The Uri to check. + * @return Whether the Uri authority is MediaProvider. + */ + public static boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + /** + * @param uri + * The Uri to check. + * @return Whether the Uri authority is Google Photos. + */ + public static boolean isGooglePhotosUri(Uri uri) { + return "com.google.android.apps.photos.content".equals(uri.getAuthority()); + } +} diff --git a/代码/在这里3.0/bin/dexedLibs/BmobSDK_V3.3.4_0310-959d491faede09877edd4bca7e87b2f3.jar b/代码/在这里3.0/bin/dexedLibs/BmobSDK_V3.3.4_0310-959d491faede09877edd4bca7e87b2f3.jar index 0318bb4..9df0fc2 100644 Binary files a/代码/在这里3.0/bin/dexedLibs/BmobSDK_V3.3.4_0310-959d491faede09877edd4bca7e87b2f3.jar and b/代码/在这里3.0/bin/dexedLibs/BmobSDK_V3.3.4_0310-959d491faede09877edd4bca7e87b2f3.jar differ diff --git a/代码/在这里3.0/bin/dexedLibs/android-support-v4-8aa32c063ffa95f41612c8459081d1bc.jar b/代码/在这里3.0/bin/dexedLibs/android-support-v4-8aa32c063ffa95f41612c8459081d1bc.jar index 420ac4e..832bf5c 100644 Binary files a/代码/在这里3.0/bin/dexedLibs/android-support-v4-8aa32c063ffa95f41612c8459081d1bc.jar and b/代码/在这里3.0/bin/dexedLibs/android-support-v4-8aa32c063ffa95f41612c8459081d1bc.jar differ diff --git a/代码/在这里3.0/bin/dexedLibs/bmobPush_0.1beta-58692f8f0e90f48a557b18c38e886d35.jar b/代码/在这里3.0/bin/dexedLibs/bmobPush_0.1beta-58692f8f0e90f48a557b18c38e886d35.jar index d08da4a..399f231 100644 Binary files a/代码/在这里3.0/bin/dexedLibs/bmobPush_0.1beta-58692f8f0e90f48a557b18c38e886d35.jar and b/代码/在这里3.0/bin/dexedLibs/bmobPush_0.1beta-58692f8f0e90f48a557b18c38e886d35.jar differ diff --git a/代码/在这里3.0/bin/dexedLibs/mta-sdk-1.6.2-f81962e36934419d90510c8fe39a2ebc.jar b/代码/在这里3.0/bin/dexedLibs/mta-sdk-1.6.2-f81962e36934419d90510c8fe39a2ebc.jar index 976b87d..9a5e34c 100644 Binary files a/代码/在这里3.0/bin/dexedLibs/mta-sdk-1.6.2-f81962e36934419d90510c8fe39a2ebc.jar and b/代码/在这里3.0/bin/dexedLibs/mta-sdk-1.6.2-f81962e36934419d90510c8fe39a2ebc.jar differ diff --git a/代码/在这里3.0/bin/dexedLibs/open_sdk_r5756-66959d2f52ef990d4727d4580369efa1.jar b/代码/在这里3.0/bin/dexedLibs/open_sdk_r5756-66959d2f52ef990d4727d4580369efa1.jar index 254199d..0514f7f 100644 Binary files a/代码/在这里3.0/bin/dexedLibs/open_sdk_r5756-66959d2f52ef990d4727d4580369efa1.jar and b/代码/在这里3.0/bin/dexedLibs/open_sdk_r5756-66959d2f52ef990d4727d4580369efa1.jar differ diff --git a/代码/在这里3.0/bin/res/crunch/drawable/ic_search.png b/代码/在这里3.0/bin/res/crunch/drawable/ic_search.png index 8ff6204..2294af5 100644 Binary files a/代码/在这里3.0/bin/res/crunch/drawable/ic_search.png and b/代码/在这里3.0/bin/res/crunch/drawable/ic_search.png differ diff --git a/代码/在这里3.0/src/com/stone/shop/adapter/GridAdapter.java b/代码/在这里3.0/src/com/stone/shop/adapter/GridAdapter.java index 3fc0aed..cad116f 100644 --- a/代码/在这里3.0/src/com/stone/shop/adapter/GridAdapter.java +++ b/代码/在这里3.0/src/com/stone/shop/adapter/GridAdapter.java @@ -23,7 +23,7 @@ public class GridAdapter extends BaseAdapter { //学习小菜 public static final String[] mSchoolTexts = TypeDef.typeSonList1; - private int[] mSchoolImages = { R.drawable.ic_8, R.drawable.ic_8, R.drawable.ic_8 }; + private int[] mSchoolImages = { R.drawable.ic_81, R.drawable.ic_82, R.drawable.ic_8 }; //吃饭小菜 public static final String[] mFoodTexts = TypeDef.typeSonList2; @@ -31,9 +31,9 @@ public class GridAdapter extends BaseAdapter { //购物小菜 public static final String[] mGiftTexts = TypeDef.typeSonList3; - private int[] mGiftImages = { R.drawable.ic_7, R.drawable.ic_7, - R.drawable.ic_7, R.drawable.ic_7, R.drawable.ic_7, - R.drawable.ic_7, R.drawable.ic_7}; + private int[] mGiftImages = { R.drawable.ic_71, R.drawable.ic_72, + R.drawable.ic_73, R.drawable.ic_74, R.drawable.ic_75, + R.drawable.ic_76, R.drawable.ic_77}; //疯狂小菜 public static final String[] mOutTexts = TypeDef.typeSonList4; diff --git a/代码/在这里3.0/src/com/stone/shop/view/BaseActivity.java b/代码/在这里3.0/src/com/stone/shop/view/BaseActivity.java index f70686f..5587d0c 100644 --- a/代码/在这里3.0/src/com/stone/shop/view/BaseActivity.java +++ b/代码/在这里3.0/src/com/stone/shop/view/BaseActivity.java @@ -26,8 +26,8 @@ public class BaseActivity extends TabActivity { String[] mTitle = new String[] { "周边", "讨论区", "我的"}; - int[] mIcon = new int[] { R.drawable.ic_shop, R.drawable.ic_sale, - R.drawable.ic_car, R.drawable.ic_mine }; + int[] mIcon = new int[] { R.drawable.ic_shop2, R.drawable.ic_sale2, + R.drawable.ic_car2, R.drawable.ic_mine }; @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/代码/在这里3.0/src/com/stone/shop/view/ShopItemActivity.java b/代码/在这里3.0/src/com/stone/shop/view/ShopItemActivity.java index a88f4f9..32c51bd 100644 --- a/代码/在这里3.0/src/com/stone/shop/view/ShopItemActivity.java +++ b/代码/在这里3.0/src/com/stone/shop/view/ShopItemActivity.java @@ -93,10 +93,10 @@ public class ShopItemActivity extends Activity implements OnClickListener, OnIte viewPager = (ViewPagerCompat) findViewById(R.id.viewpager); pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertab); - pagerTabStrip.setTabIndicatorColor(Color.argb(255, 255, 127, 39)); + pagerTabStrip.setTabIndicatorColor(Color.rgb(255, 0, 0)); pagerTabStrip.setDrawFullUnderline(false); pagerTabStrip.setTextSpacing(50); - pagerTabStrip.setTextColor(Color.argb(255, 255, 127, 39)); + pagerTabStrip.setTextColor(Color.rgb(255, 0, 0)); view1 = LayoutInflater.from(this) .inflate(R.layout.viewpager_menu, null); diff --git a/代码/在这里3.0/src/com/stone/util/Util.java b/代码/在这里3.0/src/com/stone/util/Util.java index bb6f120..ed81ca3 100644 --- a/代码/在这里3.0/src/com/stone/util/Util.java +++ b/代码/在这里3.0/src/com/stone/util/Util.java @@ -52,8 +52,7 @@ public class Util { /** * 判断电话号码是否有效 * - * @param phoneNumber - * @return true 有效 / false 无效 + * @param phoneNumber @return true 有效 / false 无效 */ public static boolean isPhoneNumberValid(String phoneNumber) { diff --git a/模型/~$$在这里--界面类图.~vsdx b/模型/~$$在这里--界面类图.~vsdx deleted file mode 100644 index 8f889f7..0000000 Binary files a/模型/~$$在这里--界面类图.~vsdx and /dev/null differ