package com.dreamspace.uucampus.ui.activity.Order;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.adapter.Order.MyOrderListAdapter;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.model.GetOrderListRes;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.widget.LoadMoreListView;
import java.util.ArrayList;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/10/20.
*/
public class MyOrderAct extends AbsActivity{
@Bind(R.id.swp)
SwipeRefreshLayout swipeRefreshLayout;
@Bind(R.id.load_more_lv)
LoadMoreListView loadMoreLv;
@Bind(R.id.content_ll)
LinearLayout contentLl;
private MyOrderListAdapter myOrderListAdapter;
private int orderPage = 1;
private boolean actDestroy = false;
private boolean firstGetData = true;
private static final int GO_PAY = 1;//从列表项进入支付界面
private static final int GO_COMMENT = 2;//从列表项进入评论界面
private static final int GO_ORDER_DETAIL = 3;
@Override
protected int getContentView() {
return R.layout.activity_my_order;
}
@Override
protected void prepareDatas() {
getOrderList();
}
@Override
protected void initViews() {
getSupportActionBar().setTitle(getString(R.string.my_orders));
swipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color));
initListeners();
}
@Override
protected View getLoadingTargetView() {
return contentLl;
}
private void initListeners(){
loadMoreLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
bundle.putString(OrderDetailAct.ORDER_ID, myOrderListAdapter.getItem(position).get_id());
readyGoForResult(OrderDetailAct.class, GO_ORDER_DETAIL, bundle);
}
});
loadMoreLv.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() {
@Override
public void onLoadMore() {
orderPage++;
getOrderList();
}
});
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
orderPage = 1;
firstGetData = true;
getOrderList();
}
});
}
private void getOrderList(){
if(firstGetData){
toggleShowLoading(true,null);
}
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
if(firstGetData){
toggleNetworkError(true,getOrderListClickListener);
}
loadMoreLv.setLoading(false);
swipeRefreshLayout.setRefreshing(false);
return;
}
ApiManager.getService(this).getOrderList(orderPage, new Callback<GetOrderListRes>() {
@Override
public void success(GetOrderListRes getOrderListRes, Response response) {
if (getOrderListRes != null && !actDestroy) {
loadMoreLv.setLoading(false);
swipeRefreshLayout.setRefreshing(false);
if (orderPage == 1 && getOrderListRes.getOrders().size() == 0) {
toggleShowEmpty(true, getString(R.string.no_orders), null);
return;
}
if (orderPage != 1 && getOrderListRes.getOrders().size() == 0) {
return;
}
if (firstGetData) {
myOrderListAdapter = new MyOrderListAdapter(MyOrderAct.this, getOrderListRes.getOrders(), MyOrderListAdapter.ViewHolder.class);
loadMoreLv.setAdapter(myOrderListAdapter);
myOrderListAdapter.setOnPayClickListener(new MyOrderListAdapter.OnPayClickListener() {
@Override
public void onPayClick(String order_name, String order_id, int total_price, int rest_to_pay) {
//进入支付界面
inPayAct(order_name, order_id, total_price, rest_to_pay);
}
});
myOrderListAdapter.setOnCommentClickListener(new MyOrderListAdapter.OnCommentClickListener() {
@Override
public void onCommentClick(String order_id, String good_id) {
//进入评论界面
inCommentAct(order_id, good_id);
}
});
toggleRestore();
firstGetData = false;
} else {
myOrderListAdapter.addEntities(getOrderListRes.getOrders());
myOrderListAdapter.notifyDataSetChanged();
}
}
}
@Override
public void failure(RetrofitError error) {
if (orderPage == 1) {
toggleShowEmpty(true, null, getOrderListClickListener);
} else {
showInnerError(error);
}
loadMoreLv.setLoading(false);
swipeRefreshLayout.setRefreshing(false);
}
});
}
private void inCommentAct(String order_id,String good_id){
Bundle bundle = new Bundle();
bundle.putString(CommentAct.ORDER_ID, order_id);
bundle.putString(CommentAct.GOOD_ID, good_id);
readyGoForResult(CommentAct.class,GO_COMMENT,bundle);
}
private void inPayAct(String order_name,String order_id,int total_price,int rest_to_pay){
Bundle bundle = new Bundle();
bundle.putString(OrderPayAct.ORDER_NAME,order_name);
bundle.putString(OrderPayAct.ORDER_ID,order_id);
bundle.putFloat(OrderPayAct.ORDER_TOTAL_PRICE, total_price);
bundle.putFloat(OrderPayAct.REST_TO_PAY,rest_to_pay);
readyGoForResult(OrderPayAct.class, GO_PAY, bundle);
}
private View.OnClickListener getOrderListClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
getOrderList();
}
};
@Override
protected void onDestroy() {
actDestroy = true;
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == GO_PAY && resultCode == RESULT_OK){
//刷新数据
orderPage = 1;
firstGetData = true;
getOrderList();
}else if(requestCode == GO_COMMENT && resultCode == RESULT_OK){
orderPage = 1;
firstGetData = true;
getOrderList();
}else if(requestCode == GO_ORDER_DETAIL && resultCode == RESULT_OK){
//订单状态改变
orderPage = 1;
firstGetData = true;
getOrderList();
}
}
}