Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.allstoresteam.allstores;
- import android.app.Activity;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.LoaderManager.LoaderCallbacks;
- import android.support.v4.content.Loader;
- import android.support.v4.widget.SwipeRefreshLayout;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.Button;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.ProgressBar;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.allstoresteam.allstores.MyHttpClient;
- import com.allstoresteam.allstores.gcm.PushRegIdManager;
- import com.allstoresteam.allstores.model.BucketGoods;
- import com.allstoresteam.allstores.model.GoodLikeLoaderResponse;
- import com.allstoresteam.allstores.model.goods.Good;
- import com.allstoresteam.allstores.model.goods.GoodsFromJSON;
- import com.allstoresteam.allstores.model.shops.Shop;
- import com.allstoresteam.allstores.network.GoodLikeLoader;
- import com.allstoresteam.allstores.network.GoodsLoader;
- import com.allstoresteam.allstores.network.ShopLoader;
- import com.allstoresteam.allstores.ui.EndlessScrollListenerFixed;
- import com.allstoresteam.allstores.ui.activities.GoodDetailActivity;
- import com.allstoresteam.allstores.ui.activities.LoginActivity;
- import com.allstoresteam.allstores.ui.activities.ShopOnMapActivity;
- import com.allstoresteam.allstores.ui.adapters.GoodsListAdapter;
- import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
- import com.nostra13.universalimageloader.core.DisplayImageOptions;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
- import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
- import org.json.JSONArray;
- import in.srain.cube.views.GridViewWithHeaderAndFooter;
- public class GoodsListFragment extends Fragment implements GoodsListAdapter.OnGoodLikedListener,
- SwipeRefreshLayout.OnRefreshListener{
- public static final String GOODS_URL_EXTRA_KEY = "goods_url_key";
- public static final String SHOP_URL_EXTRA_KEY = "shop_url_key";
- public static final String SHOP_NAME_EXTRA_KEY = "shop_name_key";
- public static final String SHOP_IMAGE_URL_EXTRA_KEY = "shop_image_url_key";
- public static final String SHOP_ID_EXTRA_KEY = "shop_id_key";
- public static final String TAB_POSITION_EXTRA_KEY = "tab_position_key";
- private static final int VISIBLE_THRESHOLD = 20;
- private static final int GOODS_LOADER_ID = 0;
- private static final int SHOP_LOADER_ID = 1;
- private static final int GOOD_LIKE_LOADER_ID = 2;
- private ImageLoader imageLoader;
- private GridViewWithHeaderAndFooter goodsGridView;
- private View goodsFooterView, goodsHeaderView;
- private TextView tvShopDescription, tvShopAddress;
- private Button bShowOnMap, bCall;
- private ProgressBar pbShopDescription;
- private GoodsListAdapter goodsListAdapter;
- private Loader<JSONArray> goodsLoader;
- private Loader<Shop> shopLoader;
- private Loader<GoodLikeLoaderResponse> goodLikeLoader;
- private GoodsFromJSON goods;
- private String goodsUrl, shopUrl, shopName, shopImageUrl, shopId;
- private int tabPosition;
- private BucketGoods bucketGoods;
- private String username, password;
- private SwipeRefreshLayout mSwipeRefreshLayout;
- private EndlessScrollListenerFixed endlessScrollListener;
- public static GoodsListFragment newInstance(String goodsUrl, String shopUrl, String shopName,
- String shopImageUrl, String shopId, int tabPosition) {
- GoodsListFragment frag = new GoodsListFragment();
- Bundle args = new Bundle();
- args.putString(GOODS_URL_EXTRA_KEY, goodsUrl);
- args.putString(SHOP_URL_EXTRA_KEY, shopUrl);
- args.putString(SHOP_NAME_EXTRA_KEY, shopName);
- args.putString(SHOP_IMAGE_URL_EXTRA_KEY, shopImageUrl);
- args.putString(SHOP_ID_EXTRA_KEY, shopId);
- args.putInt(TAB_POSITION_EXTRA_KEY, tabPosition);
- frag.setArguments(args);
- return frag;
- }
- public static GoodsListFragment newInstance(String goodsUrl, int tabPosition) {
- GoodsListFragment frag = new GoodsListFragment();
- Bundle args = new Bundle();
- args.putString(GOODS_URL_EXTRA_KEY, goodsUrl);
- args.putInt(TAB_POSITION_EXTRA_KEY, tabPosition);
- frag.setArguments(args);
- return frag;
- }
- public static GoodsListFragment newInstance(String goodsUrl) {
- GoodsListFragment frag = new GoodsListFragment();
- Bundle args = new Bundle();
- args.putString(GOODS_URL_EXTRA_KEY, goodsUrl);
- args.putInt(TAB_POSITION_EXTRA_KEY, 0);
- frag.setArguments(args);
- return frag;
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- initImageLoader();
- setUsernameAndPassword();
- DisplayImageOptions imageLoaderOptions = new DisplayImageOptions.Builder()
- .showImageOnLoading(R.drawable.loading_afisha_image)
- .showImageOnFail(R.drawable.loading_afisha_image)
- .cacheInMemory(true)
- .bitmapConfig(Bitmap.Config.RGB_565)
- .cacheOnDisc(true)
- .build();
- DisplayImageOptions ilShopImageOptions = new DisplayImageOptions.Builder()
- .showImageOnLoading(R.drawable.loading_brend_image)
- .showImageOnFail(R.drawable.loading_brend_image)
- .cacheInMemory(true)
- .cacheOnDisc(true)
- .bitmapConfig(Bitmap.Config.RGB_565)
- .build();
- shopUrl = getArguments().getString(SHOP_URL_EXTRA_KEY);
- shopName = getArguments().getString(SHOP_NAME_EXTRA_KEY);
- shopImageUrl = getArguments().getString(SHOP_IMAGE_URL_EXTRA_KEY);
- shopId = getArguments().getString(SHOP_ID_EXTRA_KEY);
- goodsUrl = getArguments().getString(GOODS_URL_EXTRA_KEY);
- tabPosition = getArguments().getInt(TAB_POSITION_EXTRA_KEY);
- SharedPreferences mPreferences = getActivity().getSharedPreferences(getActivity().getString(R.string.app_name), 0);
- bucketGoods = new BucketGoods(mPreferences);
- final View rootView = inflater.inflate(R.layout.fragment_goods_grid, container, false);
- mSwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.refresh);
- mSwipeRefreshLayout.setOnRefreshListener(this);
- goods = new GoodsFromJSON();
- goodsGridView = (GridViewWithHeaderAndFooter) rootView.findViewById(R.id.goods_grid);
- LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
- goodsFooterView = layoutInflater.inflate(R.layout.good_grid_footer, null);
- goodsFooterView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
- goodsListAdapter = new GoodsListAdapter(getActivity(), goods, imageLoaderOptions, this, bucketGoods);
- if (shopUrl != null && !shopUrl.equals("")){
- goodsHeaderView = layoutInflater.inflate(R.layout.good_grid_header2, null);
- goodsHeaderView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
- goodsGridView.addHeaderView(goodsHeaderView);
- bShowOnMap = (Button) goodsHeaderView.findViewById(R.id.b_on_map);
- bCall = (Button) goodsHeaderView.findViewById(R.id.b_call);
- TextView tvShopName = (TextView) goodsHeaderView.findViewById(R.id.tv_shop_name);
- tvShopName.setText(shopName);
- ImageView ivShop = (ImageView) goodsHeaderView.findViewById(R.id.iv_shop);
- if (!shopImageUrl.equals(""))
- imageLoader.displayImage(shopImageUrl, ivShop, ilShopImageOptions,
- new SimpleImageLoadingListener(){
- @Override
- public void onLoadingComplete(String imageUri,
- View view, Bitmap loadedImage) {
- goodsListAdapter.notifyDataSetChanged();
- }
- });
- tvShopDescription = (TextView) goodsHeaderView.findViewById(R.id.tv_shop_description);
- tvShopDescription.setVisibility(View.GONE);
- tvShopAddress = (TextView) goodsHeaderView.findViewById(R.id.tv_shop_address);
- tvShopAddress.setVisibility(View.GONE);
- pbShopDescription = (ProgressBar) goodsHeaderView.findViewById(R.id.pb_shop_description);
- pbShopDescription.setVisibility(View.VISIBLE);
- Bundle bundle = new Bundle();
- bundle.putString(GoodsLoader.ARGS_URL, MyHttpClient.GET_SHOP_URL_NEW + shopId);
- shopLoader = getLoaderManager().initLoader(SHOP_LOADER_ID, bundle, new ShopLoaderCallbacks());
- shopLoader.forceLoad();
- }
- goodsGridView.post(new Runnable() {
- @Override
- public void run() {
- goodsGridView.tryToScrollToBottomSmoothly(100);
- }
- });
- goodsGridView.addFooterView(goodsFooterView);;
- goodsGridView.setAdapter(goodsListAdapter);
- goodsGridView.setFastScrollEnabled(false);
- goodsGridView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int position,
- long id) {
- Intent intent = new Intent(getActivity(), GoodDetailActivity.class);
- if (goodsListAdapter.getItem((int) id) != null) {
- Good good = (Good) goodsListAdapter.getItem((int) id);
- intent.putExtra(GoodDetailActivity.GOOD_DETAIL_JSON_INTENT_KEY, good.getJSONStr());
- startActivity(intent);
- }
- }
- });
- endlessScrollListener = new EndlessScrollListenerFixed(0) {
- @Override
- public void onLoadMore(int page, int totalItemsCount) {
- goodsFooterView.setVisibility(View.VISIBLE);
- restartLoader(page);
- endlessScrollListener.setIsLoading(true);
- }
- };
- goodsGridView.setOnScrollListener(endlessScrollListener);
- restartLoader(0);
- return rootView;
- }
- public void initImageLoader() {
- ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(getActivity())
- .threadPoolSize(5)
- .memoryCache(new WeakMemoryCache())
- .denyCacheImageMultipleSizesInMemory()
- .memoryCacheSize(1048576 * 10).build();
- imageLoader = ImageLoader.getInstance();
- imageLoader.init(imageLoaderConfiguration);
- //ImageLoader.getInstance().clearDiskCache();
- //ImageLoader.getInstance().clearMemoryCache();
- // Initialize ImageLoader with configuration.
- }
- private void setUsernameAndPassword(){
- SharedPreferences mPreferences = getActivity().getSharedPreferences(getString(R.string.app_name), 0);
- String email = mPreferences.getString(LoginActivity.PROPERTY_EMAIL, "");
- String name = mPreferences.getString(LoginActivity.PROPERTY_NAME, "");
- if (!email.equals("")){
- username = name;
- password = mPreferences.getString(LoginActivity.PROPERTY_PASSWORD, "");
- } else {
- username = mPreferences.getString(PushRegIdManager.PROPERTY_REG_ID, "");
- password = "";
- }
- }
- public void restartLoader(final int currentPage){
- Bundle bundle = new Bundle();
- bundle.putInt(GoodsLoader.ARGS_SKIP, currentPage);
- bundle.putInt(GoodsLoader.ARGS_LIMIT, VISIBLE_THRESHOLD);
- bundle.putString(GoodsLoader.ARGS_URL, goodsUrl);
- goodsLoader = getLoaderManager().restartLoader(GOODS_LOADER_ID, bundle, new LoaderCallbacks<JSONArray>(){
- @Override
- public Loader<JSONArray> onCreateLoader(int id, Bundle args) {
- Loader<JSONArray> loader = new GoodsLoader(getActivity(), args);
- return loader;
- }
- @Override
- public void onLoadFinished(Loader<JSONArray> loader, JSONArray goodsJSONArray) {
- if (mSwipeRefreshLayout.isRefreshing())
- mSwipeRefreshLayout.setRefreshing(false);
- goodsFooterView.setVisibility(View.GONE);
- if (goodsJSONArray == null)
- return;
- if (goodsJSONArray.length() == 0 && tabPosition == 0 && currentPage == 0){
- Toast.makeText(getActivity(), getResources().getString(R.string.no_items_in_here), Toast.LENGTH_SHORT).show();
- }
- goods.appendGoodsFromJSON(goodsJSONArray);
- goods.setGoodsLikesData(bucketGoods);
- goodsListAdapter.notifyDataSetChanged();
- if (goodsJSONArray.length() == VISIBLE_THRESHOLD) {
- endlessScrollListener.setIsLoading(false);
- endlessScrollListener.increaseCurrentPage();
- }
- }
- @Override
- public void onLoaderReset(Loader<JSONArray> loader) {
- // TODO Auto-generated method stub
- }
- });
- goodsLoader.forceLoad();
- }
- @Override
- public void onGoodLiked(String goodId, String goodJSONStr) {
- SharedPreferences mPreferences = getActivity().getSharedPreferences(getString(R.string.app_name), 0);
- String email = mPreferences.getString(LoginActivity.PROPERTY_EMAIL, "");
- if (email.equals("")){
- Toast.makeText(getContext(), getResources().getString(R.string.login_to_like ability), Toast.LENGTH_SHORT).show();
- return;
- }
- Bundle bundle = new Bundle();
- bundle.putString(GoodLikeLoader.ARGS_GOOD_ID, goodId);
- bundle.putString(GoodLikeLoader.ARGS_GOOD_JSON_STR, goodJSONStr);
- bundle.putBoolean(GoodLikeLoader.ARGS_LIKE_OR_DISLIKE, true);
- bundle.putString(GoodLikeLoader.ARGS_PASSWORD, password);
- bundle.putString(GoodLikeLoader.ARGS_USERNAME, username);
- goodLikeLoader = getLoaderManager().restartLoader(GOOD_LIKE_LOADER_ID, bundle, new GoodLikeLoaderCallbacks());
- goodLikeLoader.forceLoad();
- }
- @Override
- public void onGoodDisliked(String goodId, String goodJSONStr) {
- SharedPreferences mPreferences = getActivity().getSharedPreferences(getString(R.string.app_name), 0);
- String email = mPreferences.getString(LoginActivity.PROPERTY_EMAIL, "");
- if (email.equals("")){
- Toast.makeText(getContext(), getResources().getString(R.string.login_to_like ability), Toast.LENGTH_SHORT).show();
- return;
- }
- Bundle bundle = new Bundle();
- bundle.putString(GoodLikeLoader.ARGS_GOOD_ID, goodId);
- bundle.putString(GoodLikeLoader.ARGS_GOOD_JSON_STR, goodJSONStr);
- bundle.putBoolean(GoodLikeLoader.ARGS_LIKE_OR_DISLIKE, false);
- bundle.putString(GoodLikeLoader.ARGS_PASSWORD, password);
- bundle.putString(GoodLikeLoader.ARGS_USERNAME, username);
- goodLikeLoader = getLoaderManager().restartLoader(GOODS_LOADER_ID, bundle, new GoodLikeLoaderCallbacks());
- goodLikeLoader.forceLoad();
- }
- @Override
- public void onRefresh() {
- goods.clear();
- goodsListAdapter.notifyDataSetChanged();
- restartLoader(0);
- endlessScrollListener.init();
- }
- private class ShopLoaderCallbacks implements LoaderCallbacks<Shop> {
- @Override
- public Loader<Shop> onCreateLoader(int id, Bundle args) {
- Loader<Shop> loader = new ShopLoader(getActivity(), args);
- return loader;
- }
- @Override
- public void onLoadFinished(Loader<Shop> loader, final Shop shop) {
- if (pbShopDescription != null)
- pbShopDescription.setVisibility(View.GONE);
- if (shop == null)
- return;
- if (shop.getDescription() != null && !shop.getDescription().equals("")) {
- tvShopDescription.setVisibility(View.VISIBLE);
- tvShopDescription.setText(shop.getDescription());
- }
- if (shop.getAddress() != null && !shop.getAddress().equals("")){
- tvShopAddress.setVisibility(View.VISIBLE);
- tvShopAddress.setText(shop.getAddress());
- }
- if (shop.getGpsLat() != 0) {
- bShowOnMap.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent = new Intent(getActivity(), ShopOnMapActivity.class);
- intent.putExtra(ShopOnMapActivity.SHOP_NAME_INTENT_KEY, shopName);
- intent.putExtra(ShopOnMapActivity.SHOP_GPS_LAT_INTENT_KEY, shop.getGpsLat());
- intent.putExtra(ShopOnMapActivity.SHOP_GPS_LONG_INTENT_KEY, shop.getGpsLong());
- startActivity(intent);
- }
- });
- }
- bCall.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- String phoneStr = shop.getTel();
- if (phoneStr.equals("")){
- Toast.makeText(getActivity(), "Магазин не указал своего номера телефона.",
- Toast.LENGTH_SHORT).show();
- return;
- }
- Intent intent = new Intent(Intent.ACTION_DIAL);
- intent.setData(Uri.parse("tel:+7" + phoneStr));
- startActivity(intent);
- }
- });
- goodsListAdapter.notifyDataSetChanged();
- }
- @Override
- public void onLoaderReset(Loader<Shop> loader) {
- }
- }
- private class GoodLikeLoaderCallbacks implements LoaderCallbacks<GoodLikeLoaderResponse> {
- @Override
- public Loader<GoodLikeLoaderResponse> onCreateLoader(int id, Bundle args) {
- Loader<GoodLikeLoaderResponse> loader = new GoodLikeLoader(getActivity(), args);
- return loader;
- }
- @Override
- public void onLoadFinished(Loader<GoodLikeLoaderResponse> loader, GoodLikeLoaderResponse response) {
- if (!response.isSuccess()) {
- if (response.isLike())
- bucketGoods.removeGood(response.getGoodId());
- else {
- bucketGoods.addGood(response.getGoodJSONStr());
- }
- goods.setGoodsLikesData(bucketGoods);
- goodsListAdapter.notifyDataSetChanged();
- } else {
- if (response.isLike())
- goods.increaseNumLikesByGoodId(response.getGoodId());
- else
- goods.decreaseNumLikesByGoodId(response.getGoodId());
- goods.setGoodsLikesData(bucketGoods);
- goodsListAdapter.notifyDataSetChanged();
- }
- }
- @Override
- public void onLoaderReset(Loader<GoodLikeLoaderResponse> loader) {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement