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 android.widget.AbsListView.OnScrollListener; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.adapter.MiPhoneProductAdapter; import com.xiaomi.xms.sales.loader.MiPhoneListLoader; import com.xiaomi.xms.sales.loader.MiPhoneListLoader.Result; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.widget.BaseListView; import com.xiaomi.xms.sales.widget.EmptyLoadingView; import com.xiaomi.xms.sales.widget.PageScrollListener; public class MiPhoneProductFragment extends BaseFragment implements LoaderCallbacks<MiPhoneListLoader.Result> { private final static int MIPHONE_PRODUCT_LOADER = 0; private EmptyLoadingView mLoadingView; private BaseListView mListView; public String mCategoryId; private MiPhoneProductAdapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.miphone_product_fragment, container, false); mListView = (BaseListView) view.findViewById(android.R.id.list); mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading); mAdapter = new MiPhoneProductAdapter(getActivity()); mListView.setAdapter(mAdapter); mListView.setOnScrollListener(mOnScrollListener); Bundle bundle = getArguments(); if (bundle != null) { mCategoryId = bundle.getString(Constants.Intent.EXTRA_CATEGORY_ID); } return view; } private OnScrollListener mOnScrollListener = new PageScrollListener(new Runnable() { @Override public void run() { if (!mLoader.isLoading()) { if (((MiPhoneListLoader) mLoader).hasNextPage()) { mLoader.forceLoad(); } } } }); @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getLoaderManager().initLoader(MIPHONE_PRODUCT_LOADER, null, this); } @Override public Loader<Result> onCreateLoader(int id, Bundle bundle) { if (id == MIPHONE_PRODUCT_LOADER) { mLoader = new MiPhoneListLoader(getActivity(), mCategoryId, ""); mLoader.setProgressNotifiable(mLoadingView); return (Loader<MiPhoneListLoader.Result>) mLoader; } return null; } @Override public void onLoadFinished(Loader<Result> arg0, Result data) { mAdapter.updateData(data.mMiPhoneInfos); } @Override public void onLoaderReset(Loader<Result> arg0) { } }