package com.wise.wawc;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.wise.list.XListView;
import com.wise.list.XListView.IXListViewListener;
import com.wise.pubclas.Constant;
import com.wise.pubclas.GetSystem;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class Fragment_order extends Fragment implements IXListViewListener{
private static final String TAG = "Fragment_order";
private static final int Get_order = 1;
private static final int refresh = 2;
XListView lv_activity_order_me;
List<OrderData> orderDatas = new ArrayList<OrderData>();
OrderAdapter orderAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_order, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
lv_activity_order_me = (XListView)getActivity().findViewById(R.id.lv_activity_order_me);
lv_activity_order_me.setPullRefreshEnable(false);
lv_activity_order_me.setPullLoadEnable(true);
lv_activity_order_me.setXListViewListener(this);
ImageView iv_activity_order_me_menu = (ImageView)getActivity().findViewById(R.id.iv_activity_order_me_menu);
iv_activity_order_me_menu.setOnClickListener(onClickListener);
GetOrder();
registerBroadcastReceiver();
}
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_activity_order_me_menu:
ActivityFactory.A.LeftMenu();
break;
}
}
};
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case Get_order:
orderDatas.addAll(jsonOrder(msg.obj.toString()));
orderAdapter = new OrderAdapter();
lv_activity_order_me.setAdapter(orderAdapter);
onLoad();
break;
case refresh:
orderDatas.addAll(jsonOrder(msg.obj.toString()));
orderAdapter.notifyDataSetChanged();
onLoad();
if(jsonOrder(msg.obj.toString()).size() == 0){
lv_activity_order_me.setPullLoadEnable(false);
}
break;
}
}
};
private void onLoad() {
lv_activity_order_me.stopRefresh();
lv_activity_order_me.stopLoadMore();
}
private void GetOrder(){
String url = Constant.BaseUrl + "customer/" + Variable.cust_id + "/order?auth_code="+Variable.auth_code;
new Thread(new NetThread.GetDataThread(handler, url, Get_order)).start();
}
private List<OrderData> jsonOrder(String result){
List<OrderData> oDatas = new ArrayList<OrderData>();
try {
JSONArray jsonArray = new JSONArray(result);
for(int i = 0 ; i < jsonArray.length() ; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
OrderData orderData = new OrderData();
orderData.setCreate_time(GetSystem.ChangeTimeZone(jsonObject.getString("create_time").replace("T", " ").substring(0, 19)));
orderData.setOrder_id(jsonObject.getString("order_id"));
orderData.setProduct_name(jsonObject.getString("product_name"));
orderData.setQuantity(jsonObject.getString("quantity"));
orderData.setTotal_price(jsonObject.getString("total_price"));
orderData.setUnit_price(jsonObject.getString("unit_price"));
oDatas.add(orderData);
}
} catch (JSONException e) {
e.printStackTrace();
}
return oDatas;
}
private class OrderAdapter extends BaseAdapter{
LayoutInflater mInflater = LayoutInflater.from(getActivity());
@Override
public int getCount() {
return orderDatas.size();
}
@Override
public Object getItem(int position) {
return orderDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_order, null);
holder = new ViewHolder();
holder.tv_item_order_product_name = (TextView) convertView.findViewById(R.id.tv_item_order_product_name);
holder.tv_item_order_unit_price = (TextView) convertView.findViewById(R.id.tv_item_order_unit_price);
holder.tv_item_order_create_time = (TextView) convertView.findViewById(R.id.tv_item_order_create_time);
holder.tv_item_order_quantity = (TextView) convertView.findViewById(R.id.tv_item_order_quantity);
holder.tv_item_order_total_price = (TextView) convertView.findViewById(R.id.tv_item_order_total_price);
holder.tv_status = (TextView) convertView.findViewById(R.id.tv_status);
holder.tv_bt_status = (TextView) convertView.findViewById(R.id.tv_bt_status);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
final OrderData orderData = orderDatas.get(position);
holder.tv_item_order_product_name.setText(orderData.getProduct_name());
holder.tv_item_order_unit_price.setText(orderData.getUnit_price());
holder.tv_item_order_create_time.setText(orderData.getCreate_time().substring(0, 19));
holder.tv_item_order_quantity.setText(orderData.getQuantity());
holder.tv_item_order_total_price.setText(orderData.getTotal_price());
switch (orderData.getStatus()) {
case 0:
holder.tv_status.setText("待支付");
holder.tv_bt_status.setText("支付");
break;
case 1:
holder.tv_status.setText("已支付");
holder.tv_bt_status.setText("查看物流");
break;
case 2:
holder.tv_status.setText("已经货");
holder.tv_bt_status.setText("查看物流");
break;
case 3:
holder.tv_status.setText("取消订单");
holder.tv_bt_status.setText("查看物流");
break;
case 4:
holder.tv_status.setText("待对账");
holder.tv_bt_status.setText("查看物流");
break;
}
holder.tv_bt_status.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
switch (orderData.getStatus()) {
case 0://跳转到付款界面
break;
case 1:
break;
case 2://查看物流
break;
case 3:
break;
case 4:
break;
}
}
});
return convertView;
}
private class ViewHolder {
TextView tv_item_order_product_name,tv_item_order_unit_price,tv_item_order_create_time,
tv_item_order_quantity,tv_item_order_total_price,tv_status,tv_bt_status;
}
}
private class OrderData{
String create_time;
String total_price;
String quantity;
String unit_price;
String order_id;
String product_name;
int status;
public String getCreate_time() {
return create_time;
}
public void setCreate_time(String create_time) {
this.create_time = create_time;
}
public String getTotal_price() {
return total_price;
}
public void setTotal_price(String total_price) {
this.total_price = total_price;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
public String getUnit_price() {
return unit_price;
}
public void setUnit_price(String unit_price) {
this.unit_price = unit_price;
}
public String getOrder_id() {
return order_id;
}
public void setOrder_id(String order_id) {
this.order_id = order_id;
}
public String getProduct_name() {
return product_name;
}
public void setProduct_name(String product_name) {
this.product_name = product_name;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
@Override
public String toString() {
return "OrderData [create_time=" + create_time + ", total_price="
+ total_price + ", quantity=" + quantity + ", unit_price="
+ unit_price + ", order_id=" + order_id + "]";
}
}
private void registerBroadcastReceiver(){
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Constant.A_Order);
getActivity().registerReceiver(broadcastReceiver, intentFilter);
}
BroadcastReceiver broadcastReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Constant.A_Order)){
Log.d(TAG, "刷新订单");
orderDatas.clear();
GetOrder();
}
}
};
@Override
public void onRefresh() {}
@Override
public void onLoadMore() {
String Order_id = orderDatas.get(orderDatas.size()-1).getOrder_id();
String url = Constant.BaseUrl + "customer/" + Variable.cust_id + "/order?auth_code="+Variable.auth_code + "&min_id=" + Order_id;
new Thread(new NetThread.GetDataThread(handler, url, refresh)).start();
}
}