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.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.adapter.OrderExpressAdapter; import com.xiaomi.xms.sales.loader.RequestLoader; import com.xiaomi.xms.sales.loader.RequestLoader.Result; import com.xiaomi.xms.sales.model.Order; import com.xiaomi.xms.sales.model.Tags; import com.xiaomi.xms.sales.model.Order.OrderExpress; import com.xiaomi.xms.sales.model.Order.OrderExpressTrace; import com.xiaomi.xms.sales.request.HostManager; import com.xiaomi.xms.sales.request.Request; import com.xiaomi.xms.sales.request.HostManager.Parameters; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.widget.BaseListView; import com.xiaomi.xms.sales.widget.EmptyLoadingView; import org.json.JSONObject; import java.util.ArrayList; public class OrderViewExpressFragment extends BaseFragment { public static final String ORDER_EXPRESS_LIST_TYPE_HEAD = "HEAD"; public static final int EXPRESS_LOADER = 0; private OrderExpressAdapter mAdapter; private BaseListView mListView; private EmptyLoadingView mLoadingView; private RequestLoader mExpressLoader; private String mDeliverId; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.order_view_express_fragment, container, false); mListView = (BaseListView) view.findViewById(android.R.id.list); mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading); mLoadingView.setEmptyText(R.string.order_express_empty); Bundle bundle = getArguments(); if (bundle != null) { mDeliverId = bundle.getString(Constants.Intent.EXTRA_ORDER_EXPRESS); } return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getLoaderManager().initLoader(EXPRESS_LOADER, null, mExpressCallback); if (mExpressLoader != null) { Request request = new Request(HostManager.getOrderExpress()); request.addParam(Parameters.Keys.ORDER_ID, mDeliverId); mExpressLoader.load(EXPRESS_LOADER, request); } } private LoaderCallbacks<RequestLoader.Result> mExpressCallback = new LoaderCallbacks<RequestLoader.Result>() { @Override public Loader<Result> onCreateLoader(int id, Bundle arg1) { mExpressLoader = new RequestLoader(getActivity()); mLoadingView.startLoading(true); return mExpressLoader; } @Override public void onLoadFinished(Loader<Result> loader, Result result) { getLoaderManager().destroyLoader(EXPRESS_LOADER); // express OrderExpress express = new OrderExpress(); if (result.mData != null) { JSONObject expressJson = result.mData.optJSONObject(Tags.DATA); if (expressJson != null) { express.mTraces = Order.getExpressTraces(expressJson); express.mExpressId = expressJson.optString(Tags.Order.EXPRESS_ID); express.mExpressName = expressJson.optString(Tags.Order.EXPRESS_NAME); express.mExpressSN = expressJson.optString(Tags.Order.EXPRESS_SN); express.mIsShow = expressJson.optBoolean(Tags.Order.EXPRESS_SHOW); express.mUpdateTime = expressJson.optString(Tags.Order.EXPRESS_UPDATE_TIME); ArrayList<OrderExpressTrace> tracks = new ArrayList<OrderExpressTrace>(); OrderExpressTrace oet = new OrderExpressTrace(); oet.mText = getString(R.string.order_express_list_sn_label, express.mExpressSN); oet.mTime = getString(R.string.order_express_name_label, express.mExpressName); oet.mType = Constants.OrderExpressType.ORDER_EXPRESS_LIST_TYPE_HEAD; tracks.add(0, oet); if (express != null && express.mTraces != null && express.mTraces.size() > 0) { mLoadingView.stopLoading(true); mAdapter = new OrderExpressAdapter(getActivity()); mListView.setAdapter(mAdapter); tracks.addAll(0, express.mTraces); mAdapter.updateData(tracks); } else { mLoadingView.stopLoading(false); } } } } @Override public void onLoaderReset(Loader<Result> arg0) { } }; }