package com.xiaomi.xms.sales.ui; import android.app.ProgressDialog; import android.content.Intent; 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.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.activity.ShoppingActivity; import com.xiaomi.xms.sales.adapter.FCodeSelectAdapter; import com.xiaomi.xms.sales.loader.ImageLoader; import com.xiaomi.xms.sales.loader.RequestLoader; import com.xiaomi.xms.sales.loader.RequestLoader.Result; import com.xiaomi.xms.sales.model.ActionResult; import com.xiaomi.xms.sales.model.FcodeSelectProduct; import com.xiaomi.xms.sales.model.Tags; 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.util.Device; import com.xiaomi.xms.sales.util.ToastUtil; import com.xiaomi.xms.sales.util.Utils; import com.xiaomi.xms.sales.widget.BaseListView; import com.xiaomi.xms.sales.widget.EmptyLoadingView; import java.util.ArrayList; public class FCodeSelectFragment extends BaseFragment { // LoaderManager用来区别不同的Loader private static final int REQUEST_LOADER = 0; // RequestLoader用来区别不同的Request private static final int REQUEST_CODE_ADD_SHOPPING = 0; private BaseListView mListView; private EmptyLoadingView mLoadingView; private FCodeSelectAdapter mAdapter; private RequestLoader mLoader; private ProgressDialog mProgressDialog; private String mCheckedProductId; private Button mSubmitButton; private View mLisContainer; private View mSingleContainer; private ImageView mImage; private TextView mProductNameView; private TextView mPriceView; private Button mSingleSubmitButton; private View mFooterView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fcode_select_fragment, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mListView = (BaseListView) view.findViewById(android.R.id.list); mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading); mFooterView = LayoutInflater.from(getActivity()).inflate(R.layout.fcode_list_footer, null, false); mSubmitButton = (Button) mFooterView.findViewById(R.id.submit_btn); mLisContainer = view.findViewById(R.id.list_container); mSingleContainer = view.findViewById(R.id.single_container); mProductNameView = (TextView) view.findViewById(R.id.name); mPriceView = (TextView) view.findViewById(R.id.price); mImage = (ImageView) view.findViewById(R.id.photo); int hight = Device.DISPLAY_WIDTH - Device.DISPLAY_DENSITY * 20 / 160; mImage.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, hight)); mSingleSubmitButton = (Button) view.findViewById(R.id.single_submit_btn); mAdapter = new FCodeSelectAdapter(getActivity()); mListView.addFooterView(mFooterView); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(mItemClickListener); mLoadingView.setEmptyText(R.string.fcode_select_err); Bundle bundle = getArguments(); if (bundle != null) { String json = bundle.getString(Constants.Intent.EXTRA_CHECKCODE_LISTSTR); if (!TextUtils.isEmpty(json)) { ArrayList<FcodeSelectProduct> list = FcodeSelectProduct.valueOf(json); mAdapter.updateData(list); if (list != null && list.size() == 1) { mLisContainer.setVisibility(View.GONE); mSingleContainer.setVisibility(View.VISIBLE); ImageLoader.getInstance().loadImage(mImage, list.get(0).getSingleImage(), R.drawable.default_pic_small); mProductNameView.setText(list.get(0).getName()); mPriceView.setText(getString(R.string.rmb_identification,list.get(0).getPrice())); mCheckedProductId = list.get(0).getProductId(); } else { mLisContainer.setVisibility(View.VISIBLE); mSingleContainer.setVisibility(View.GONE); } } } Utils.SoftInput.hide(getActivity(), view.getWindowToken()); mSubmitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View btn) { sendAddShoppingRequest(); } }); mSingleSubmitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View btn) { sendAddShoppingRequest(); } }); if (mAdapter.getCount() > 0) { mAdapter.setCheckedPosition(0); mCheckedProductId = ((FcodeSelectProduct) mAdapter.getItem(0)).getProductId(); } } private OnItemClickListener mItemClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View item, int position, long id) { mAdapter.setCheckedPosition(position); mCheckedProductId = (String) item.getTag(); } }; private void sendAddShoppingRequest() { getLoaderManager().initLoader(REQUEST_LOADER, null, mRequestCallback); Request request = new Request(HostManager.getAddShopping()); request.addParam(Parameters.Keys.PRODUCT_ID, mCheckedProductId); request.addParam(Parameters.Keys.SOURCE, Parameters.Values.SOURCE_FCODE); mLoader.load(REQUEST_CODE_ADD_SHOPPING, request); mProgressDialog = ProgressDialog.show(getActivity(), null, getString(R.string.shake_adding_cart), false, true); } private void onAddShoppingSuccess() { mProgressDialog.dismiss(); // 跳转到购物车 Intent intent = new Intent(getActivity(), ShoppingActivity.class); startActivity(intent); } private void onAddShoppingError(String msg) { mProgressDialog.dismiss(); ToastUtil.show(getActivity(), msg); } private LoaderCallbacks<RequestLoader.Result> mRequestCallback = new LoaderCallbacks<RequestLoader.Result>() { @Override public Loader<Result> onCreateLoader(int id, Bundle bundle) { mLoader = new RequestLoader(getActivity()); return mLoader; } @Override public void onLoadFinished(Loader<Result> loader, Result data) { // 每一次调用结束,必须destroyLoader getLoaderManager().destroyLoader(REQUEST_LOADER); if (data != null) { if (REQUEST_CODE_ADD_SHOPPING == data.mRequestCode) { if (data.mStatus == Request.STATUS_OK) { ActionResult result = ActionResult.valueOf(data.mData); if (Tags.RESULT_OK.equals(result.getMessage())) { onAddShoppingSuccess(); } else { onAddShoppingError(result.getMessage()); } } } } } @Override public void onLoaderReset(Loader<Result> loader) { } }; }