package com.xiaomi.xms.sales.ui; import android.os.Bundle; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.adapter.OrderViewDeliverAdapter; import com.xiaomi.xms.sales.loader.OrderInfoLoader; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.util.Utils; import com.xiaomi.xms.sales.util.Utils.PhoneFormat; import com.xiaomi.xms.sales.widget.BaseListView; import com.xiaomi.xms.sales.widget.EmptyLoadingView; public class OrderDeliverViewFragment extends BaseFragment { private static final int ORDER_INFO_LOADER = 0; private OrderInfoLoader mLoader; private String mOrderId; private View mHeaderView; private View mHeaderViewFooter; private BaseListView mListView; private EmptyLoadingView mLoadingView; private TextView mOrderIdText; private TextView mOrderFeeText; private TextView mOrderFeeSubtotalText; private TextView mOrderAddTime; private TextView mReceiveAddressText; private TextView mReceiveTimeText; private TextView mReceiveTimeLabel; private TextView mOrderInvoiceText; private View mReceiveInfoView; private OrderViewDeliverAdapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.order_deliverview_fragment, container, false); mListView = (BaseListView) view.findViewById(android.R.id.list); mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading); mHeaderView = inflater.inflate(R.layout.deliver_view_header, null, false); mHeaderViewFooter = inflater.inflate(R.layout.order_view_footer, null, false); mHeaderViewFooter.setVisibility(View.GONE); mOrderIdText = (TextView) mHeaderView.findViewById(R.id.order_id); mOrderFeeText = (TextView) mHeaderView.findViewById(R.id.order_fee); mOrderFeeSubtotalText = (TextView) mHeaderView.findViewById(R.id.order_fee_subtotal); mOrderAddTime = (TextView) mHeaderView.findViewById(R.id.add_time); mReceiveInfoView = (LinearLayout) mHeaderView.findViewById(R.id.receive_info); mReceiveAddressText = (TextView) mHeaderView.findViewById(R.id.receive_address); mReceiveTimeText = (TextView) mHeaderView.findViewById(R.id.receive_time); mReceiveTimeLabel = (TextView) mHeaderView.findViewById(R.id.receive_time_label); mOrderInvoiceText = (TextView) mHeaderView.findViewById(R.id.invoice_info); mListView.addHeaderView(mHeaderView, null, false); mListView.addHeaderView(mHeaderViewFooter, null, false); mAdapter = new OrderViewDeliverAdapter(getActivity()); mListView.setAdapter(mAdapter); mListView.setPadding(getResources().getDimensionPixelSize(R.dimen.list_item_padding), 0, getResources().getDimensionPixelSize(R.dimen.list_item_padding), 0); handleIntent(); return view; } private void handleIntent() { Bundle bundle = getArguments(); if (bundle != null) { mOrderId = bundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID); } } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getLoaderManager().initLoader(ORDER_INFO_LOADER, null, mOrderInfoCallback); } @Override public void onResume() { super.onResume(); mLoader.reload(); } private LoaderCallbacks<OrderInfoLoader.Result> mOrderInfoCallback = new LoaderCallbacks<OrderInfoLoader.Result>() { @Override public Loader onCreateLoader(int id, Bundle arg1) { if (id == ORDER_INFO_LOADER) { mLoader = new OrderInfoLoader(getActivity()); mLoader.setNeedSecurityKeyTask(false); mLoader.setOrderId(mOrderId); mLoader.setProgressNotifiable(mLoadingView); return mLoader; } return null; } @Override public void onLoadFinished(Loader<OrderInfoLoader.Result> loader, OrderInfoLoader.Result data) { if (data != null && data.mOrderInfo != null) { mHeaderView.setVisibility(View.VISIBLE); mHeaderViewFooter.setVisibility(View.VISIBLE); mAdapter.updateData(data.mOrderInfo.getDeliverOrderList()); // order id mOrderIdText.setText(getString(R.string.deliver_view_orderid, data.mOrderInfo.getOrderId())); // order total price mOrderFeeText.setText(getString(R.string.order_view_fee, Utils.Money.valueOf(data.mOrderInfo.getFee()))); mOrderFeeSubtotalText.setText(getString(R.string.order_fee_subtotal_text, data.mOrderInfo.getOriginalPrice(), data.mOrderInfo.getReducePrice(), data.mOrderInfo.getShipmentExpense())); // invoice info mOrderInvoiceText.setText(data.mOrderInfo.getInvoiceInfo()); // add time mOrderAddTime.setText(Utils.DateTime.formatTime(getActivity(), data.mOrderInfo.getAddTime())); mReceiveInfoView.setVisibility(View.VISIBLE); mReceiveAddressText.setText(getActivity().getString( R.string.order_view_address, data.mOrderInfo.getProvince(), data.mOrderInfo.getCity(), data.mOrderInfo.getDistrict(), data.mOrderInfo.getConsigneeAddress().trim(), data.mOrderInfo.getConsignee(), PhoneFormat.valueOf(data.mOrderInfo.getConsigneePhone()))); mReceiveTimeText.setText(getActivity().getString( R.string.order_view_address_time, data.mOrderInfo.getDeliveryTime().trim())); if (data.mOrderInfo.isMihomeBuy()) { mReceiveTimeText.setVisibility(View.GONE); mReceiveTimeLabel.setVisibility(View.GONE); mReceiveAddressText.setText(data.mOrderInfo.getConsigneeAddress() + "\n" + data.mOrderInfo.getConsignee() + " " + data.mOrderInfo.getConsigneePhone()); } } else { if (TextUtils.isEmpty(data.mOrderError)) { mLoadingView.setEmptyText(R.string.order_err); } else { mLoadingView.setEmptyText(data.mOrderError); } } } @Override public void onLoaderReset(Loader<OrderInfoLoader.Result> loader) { } }; }