package com.silencedut.knowweather.citys.ui; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import com.silencedut.knowweather.R; import com.silencedut.knowweather.citys.adapter.AddData; import com.silencedut.knowweather.citys.adapter.AddHolder; import com.silencedut.knowweather.citys.adapter.CityWeatherAdapter; import com.silencedut.knowweather.citys.adapter.FollowedCityData; import com.silencedut.knowweather.citys.adapter.FollowedCityHolder; import com.silencedut.knowweather.citys.ui.presenter.FollowedCityPresenter; import com.silencedut.knowweather.citys.ui.presenter.FollowedCityView; import com.silencedut.knowweather.common.BaseFragment; import com.silencedut.knowweather.common.Constants; import com.silencedut.knowweather.repository.PreferencesUtil; import java.util.List; import butterknife.BindView; /** * Created by SilenceDut on 16/10/21. */ public class CityFragment extends BaseFragment implements FollowedCityView { @BindView(R.id.recyclerView) RecyclerView mRecyclerView; private CityWeatherAdapter mSubscribeCityAdapter; private AddData mAddData = new AddData(); private FollowedCityPresenter mFollowedCityPresenter; private boolean mIsVisibleToUser; public static CityFragment newInstance() { CityFragment cityFragment; cityFragment = new CityFragment(); return cityFragment; } @Override public void initBeforeView() { mFollowedCityPresenter = new FollowedCityPresenter(this); } @Override public int getContentViewId() { return R.layout.fragment_city; } @Override public void initViews() { mRecyclerView.setLayoutManager(new GridLayoutManager(getContext(), 3)); mRecyclerView.setBackgroundResource(R.color.main_background); mSubscribeCityAdapter = new CityWeatherAdapter(getContext()); mSubscribeCityAdapter.registerHolder(FollowedCityHolder.class, R.layout.item_followed_city); mSubscribeCityAdapter.registerHolder(AddHolder.class, R.layout.item_add_city); mRecyclerView.setAdapter(mSubscribeCityAdapter); mFollowedCityPresenter.getFollowedWeather(); } @Override public void onAllFollowedCities(List<FollowedCityData> followedCityDatas) { mSubscribeCityAdapter.clear(); mSubscribeCityAdapter.setData(followedCityDatas); mSubscribeCityAdapter.addData(mAddData); } @Override public void onFollowedCity(FollowedCityData followedCityData) { if (followedCityData == null) { //change the default icon position mSubscribeCityAdapter.notifyDataSetChanged(); return; } mSubscribeCityAdapter.getData().remove(mAddData); mSubscribeCityAdapter.addData(followedCityData); mSubscribeCityAdapter.addData(mAddData); if (!mIsVisibleToUser) { return; } if (!PreferencesUtil.get(Constants.CITYS_TIPS_SHOW, false) && mFollowedCityPresenter.followedCitiesNumber() != 0) { AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), R.style.MyAlertDialogStyle); builder.setMessage(R.string.city_guide_info); builder.setNegativeButton(R.string.known, null); builder.setPositiveButton(R.string.tip_not_show, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { PreferencesUtil.put(Constants.CITYS_TIPS_SHOW, true); } }); builder.show(); } } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); mIsVisibleToUser = isVisibleToUser; } }