package com.youai.aistore.ShopCart;
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.youai.aistore.BaseActivity;
import com.youai.aistore.ExampleActivity;
import com.youai.aistore.MyApplication;
import com.youai.aistore.R;
import com.youai.aistore.Util;
import com.youai.aistore.Bean.Base;
import com.youai.aistore.Bean.ListShopCartBean;
import com.youai.aistore.Bean.ShopCartBean;
import com.youai.aistore.Mycenter.MyLoginActivity;
import com.youai.aistore.NetInterface.Send;
import com.youai.aistore.View.SwipeMenuListView.SwipeMenu;
import com.youai.aistore.View.SwipeMenuListView.SwipeMenuCreator;
import com.youai.aistore.View.SwipeMenuListView.SwipeMenuItem;
import com.youai.aistore.View.SwipeMenuListView.SwipeMenuListView;
import com.youai.aistore.View.SwipeMenuListView.SwipeMenuListView.OnMenuItemClickListener;
import com.youai.aistore.View.SwipeMenuListView.SwipeMenuListView.OnSwipeListener;
/**
* 购物车首页
*
* @author Qzr
*
*/
public class ShopCartActivity extends BaseActivity implements OnClickListener {
// ,IXListViewListener{
private long exitTime = 0;
private Context context;
private SwipeMenuListView lv;
@SuppressWarnings("unused")
private ImageView isnull_iv;
private View isnull;
private ShopCartAdapter adapter;
private LinearLayout showviewll;
private Button seeagainbt, goypaybt;
@SuppressWarnings("unused")
private TextView tv_topright, tv_gongji;
private ShopcartInterface inter;
public static boolean shopcartchaneged;
private MyTask myTask;
private ListShopCartBean listbean;
private Base beanresult;
private Base bean;
private double price;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
context = this;
goneTopLeft();
topRightGone();
setTitleTxt(R.string.shopcart_title);
setContentXml(R.layout.shopcart);
init();
if (Util.detect(context)) {
myTask = new MyTask(1, 0);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
private void init() {
inter = new ShopcartInterface() {
@Override
public void delete(ArrayList<ShopCartBean> list, int index) {
if (Util.detect(context)) {
myTask = new MyTask(2, 0);
myTask.setdata(list, index);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
@Override
public void add(ArrayList<ShopCartBean> list, int index) {
if (Util.detect(context)) {
myTask = new MyTask(0, 1);
myTask.setdata(list, index);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
@Override
public void jian(ArrayList<ShopCartBean> list, int index) {
// TODO Auto-generated method stub
if (Util.detect(context)) {
myTask = new MyTask(0, 0);
myTask.setdata(list, index);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
};
isnull = findViewById(R.id.shopcart_isnull_ll);
showviewll = (LinearLayout) findViewById(R.id.shopcart_showview_ll);
showviewll.setVisibility(View.GONE);
seeagainbt = (Button) findViewById(R.id.shopcart_see_again_bt);
seeagainbt.setOnClickListener(this);
goypaybt = (Button) findViewById(R.id.shopcart_gopay_bt);
goypaybt.setOnClickListener(this);
tv_gongji = (TextView) findViewById(R.id.shopcart_gongji_tv);
lv = (SwipeMenuListView) findViewById(R.id.shopcart_listview);
lv.setFocusable(false);
lv.setEmptyView(isnull);
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem deleteItem = new SwipeMenuItem(
getApplicationContext());
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
0x3F, 0x25)));
deleteItem.setWidth(dp2px(90));
deleteItem.setIcon(R.drawable.del_icon_normal);
menu.addMenuItem(deleteItem);
}
};
lv.setMenuCreator(creator);
lv.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public void onMenuItemClick(int position, SwipeMenu menu, int index) {
switch (index) {
case 0:
if (Util.detect(context)) {
myTask = new MyTask(2, 0);
myTask.setdata(listbean.getList(), position);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
break;
}
}
});
// set SwipeListener
lv.setOnSwipeListener(new OnSwipeListener() {
@Override
public void onSwipeStart(int position) {
// swipe start
}
@Override
public void onSwipeEnd(int position) {
// swipe end
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
// case R.id.shopcart_isnull_iv:
// Util.ShowToast(context, "没有数据");
// break;
case R.id.shopcart_see_again_bt:
ExampleActivity.setCurrentTab(0);
break;
case R.id.shopcart_gopay_bt:
Intent intent = null;
if (MyApplication.logined) {
intent = new Intent(ShopCartActivity.this,
ConsigneeInfoActivity.class);
intent.putExtra("list", listbean);
} else {
intent = new Intent(ShopCartActivity.this,
MyLoginActivity.class);
intent.putExtra("uerID", "");
}
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
private class MyTask extends AsyncTask<Object, Object, Object> {
private int index, type, number;
private ArrayList<ShopCartBean> list;
private int postion;
public MyTask(int index, int type) {
this.index = index;
this.type = type;
}
public void setdata(ArrayList<ShopCartBean> list, int index) {
this.list = list;
this.postion = index;
}
// onPreExecute方法用于在执行后台任务前做一些UI操作
@Override
protected void onPreExecute() {
// textView.setText("loading...");
Util.startProgressDialog(context);
}
// doInBackground方法内部执行后台任务,不可在此方法内修改UI
@Override
protected Object doInBackground(Object... params) {
try {
if(index == 3){
Send s = new Send(context);
String sessionid = MyApplication.SessionId;
String userid = MyApplication.UserId;
bean = s.updataShopcartInfo(sessionid, userid);
return bean;
}else
if (index == 1) {
Send send = new Send(context);
listbean = send.getShopCartlist(MyApplication.SessionId,
MyApplication.UserId);
return listbean;// new String(baos.toByteArray(), "gb2312");
} else if (index == 2) {
Send send = new Send(context);
String rec_id = list.get(postion).getRec_id();
String session_id = MyApplication.SessionId;
String user_id = MyApplication.UserId;
beanresult = send.DeletefromShopCart(rec_id, session_id,
user_id);
return beanresult;
} else {
Send send = new Send(context);
int good_id = Integer.parseInt(list.get(postion)
.getGoods_id());
if (type == 1) {
number = 1;
} else {
number = -1;
}
String session_id = MyApplication.SessionId;
String user_id = MyApplication.UserId;
beanresult = send.AddShopCart(good_id, number, session_id,
user_id);
return beanresult;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// onProgressUpdate方法用于更新进度信息
@Override
protected void onProgressUpdate(Object... progresses) {
}
// onPostExecute方法用于在执行完后台任务后更新UI,显示结果
@Override
protected void onPostExecute(Object result) {
Util.stopProgressDialog();
if(index == 3){
bean = (Base) result;
if(bean!=null){
if(bean.getCode()==200){
MyApplication.log_staau_ischanged = false;
Util.ShowToast(context,R.string.updata_shopcart_info_success);
}else if(bean.getCode() == 500){
Util.ShowToast(context, R.string.net_work_is_error);
}else{
Util.ShowToast(context,bean.getMsg());
}
}else{
Util.ShowToast(context, R.string.net_work_is_error);
}
}else
if (index == 1) {
listbean = (ListShopCartBean) result;
if (listbean != null) {
if (listbean.getCode() == 200) {
UpUI();
price = Double.parseDouble(listbean.getCount_price());
tv_gongji
.setText("¥" + listbean.getCount_price() + "元");
}else if(listbean.getCode() == 500){
Util.ShowToast(context, R.string.net_work_is_error);
} else {
list = null;
list = new ArrayList<ShopCartBean>();
if (adapter != null) {
adapter.setdata(list);
adapter.notifyDataSetChanged();
} else {
adapter = new ShopCartAdapter(context, list, inter);
lv.setAdapter(adapter);
}
showviewll.setVisibility(View.GONE);
Util.ShowToast(context, listbean.getMsg());
}
} else {
list = null;
list = new ArrayList<ShopCartBean>();
if (adapter != null) {
adapter.setdata(list);
adapter.notifyDataSetChanged();
} else {
adapter = new ShopCartAdapter(context, list, inter);
lv.setAdapter(adapter);
}
showviewll.setVisibility(View.GONE);
Util.ShowToast(context, R.string.net_work_is_error);
}
} else if (index == 2) {
beanresult = (Base) result;
if (beanresult != null) {
if (beanresult.getCode() == 200) {
list.get(postion).setGoods_number(
String.valueOf(Integer.parseInt(list.get(
postion).getGoods_number())
+ number));
price -= Double.parseDouble(list.get(postion)
.getGoods_price())
* Integer.parseInt(list.get(postion)
.getGoods_number());
tv_gongji.setText(String.valueOf(price));
list.remove(list.get(postion));
adapter.setdata(list);
adapter.notifyDataSetChanged();
if(list.size()==0){
showviewll.setVisibility(View.GONE);
}
}else if(beanresult.getCode() == 500){
Util.ShowToast(context, R.string.net_work_is_error);
}else{
Util.ShowToast(context,beanresult.getMsg());
}
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
} else {
beanresult = (Base) result;
if (beanresult != null) {
if (beanresult.getCode() == 200) {
list.get(postion).setGoods_number(
String.valueOf(Integer.parseInt(list.get(
postion).getGoods_number())
+ number));
adapter.setdata(list);
adapter.notifyDataSetChanged();
if (type == 1) {
price += Double.parseDouble(list.get(postion)
.getGoods_price());
} else {
price -= Double.parseDouble(list.get(postion)
.getGoods_price());
}
tv_gongji.setText(String.valueOf(price));
}else if(beanresult.getCode() == 500){
Util.ShowToast(context, R.string.net_work_is_error);
} else {
Util.ShowToast(context, beanresult.getMsg());
}
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
}
// onCancelled方法用于在取消执行中的任务时更改UI
@Override
protected void onCancelled() {
Util.stopProgressDialog();
}
}
public interface ShopcartInterface {
void delete(ArrayList<ShopCartBean> list, int index);
void add(ArrayList<ShopCartBean> list, int index);
void jian(ArrayList<ShopCartBean> list, int index);
}
private void UpUI() {
if (adapter == null) {
adapter = new ShopCartAdapter(context, listbean.getList(), inter);
lv.setAdapter(adapter);
} else {
adapter.setdata(listbean.getList());
adapter.notifyDataSetChanged();
}
if (listbean != null && listbean.getList().size() > 0) {
showviewll.setVisibility(View.VISIBLE);
} else {
showviewll.setVisibility(View.GONE);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (listbean == null) {
// if(event.getAction()==MotionEvent.ACTION_DOWN &&
// event.getAction()==MotionEvent.ACTION_UP){
if (Util.detect(context)) {
myTask = new MyTask(1, 0);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
// }
} else if (listbean != null) {
if (listbean.getList() == null
|| (listbean.getList() != null && listbean.getList().size() == 0)) {
// if(event.getAction()==MotionEvent.ACTION_DOWN &&
// event.getAction()==MotionEvent.ACTION_UP){
if (Util.detect(context)) {
myTask = new MyTask(1, 0);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
}
// }
return super.onTouchEvent(event);
}
@Override
protected void onResume() {
super.onResume();
if (shopcartchaneged) {
if (Util.detect(context)) {
myTask = new MyTask(1, 0);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
shopcartchaneged = false;
}
if(MyApplication.logined){
if(MyApplication.log_staau_ischanged){
if (Util.detect(context)) {
myTask = new MyTask(3,0);
myTask.execute("");
} else {
Util.ShowToast(context, R.string.net_work_is_error);
}
}
}
}
private int dp2px(int dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
getResources().getDisplayMetrics());
}
}