package com.appassit.activitys; import java.util.ArrayList; import java.util.List; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Background; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ItemClick; import org.androidannotations.annotations.UiThread; import org.androidannotations.annotations.ViewById; import android.animation.LayoutTransition; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.appassit.R; import com.appassit.adapter.CityAdapter; import com.appassit.model.city.AreaModel; import com.appassit.model.city.BaseCityModel; import com.appassit.model.city.CityModel; import com.appassit.model.city.ProvicneModel; import com.appassit.tools.ToastUtil; import com.appassit.widget.jazzylistview.JazzyHelper; import com.appassit.widget.jazzylistview.JazzyListView; import com.appassit.widget.swipeback.SwipeBackActivity; @EActivity(R.layout.activity_weather_city) public class CityActivity extends SwipeBackActivity { protected final static String TAG = "CityActivity"; /** 动画执行时间 */ protected final static int ANIM_DURATON = 5 * 100; /** 城市 */ @ViewById(R.id.ll_city_content) LinearLayout mLLCityContent; /** 当前选择城市 */ @ViewById(R.id.rl_city) RelativeLayout mllSelectCity; /** 当前选择省市县名称 */ @ViewById(R.id.tv_area1) TextView tvArea1; @ViewById(R.id.tv_area2) TextView tvArea2; @ViewById(R.id.tv_area3) TextView tvArea3; /** 当前选中的城市信息 */ List<CityModel> mCurCityModels; List<AreaModel> mCurAreaModels; AreaModel mCurAreaModel; /** 城市列表-省 */ @ViewById(R.id.lv_area1) JazzyListView mLvProvicne; /** 城市列表-城市 */ @ViewById(R.id.lv_area2) JazzyListView mLvCity; /** 城市列表-区/县 */ @ViewById(R.id.lv_area3) JazzyListView mLvTown; /** 城市适配器 */ @Bean CityAdapter mAdapterProvicne; @Bean CityAdapter mAdapterCity; @Bean CityAdapter mAdapterTown; /** 内容动画 */ private LayoutTransition mTransition; @AfterViews void initActivity() { addContentAnim(); initView(); getProvicneList(); } private void initView() { mLvProvicne.setTransitionEffect(JazzyHelper.SLIDE_IN); mLvCity.setTransitionEffect(JazzyHelper.SLIDE_IN); mLvTown.setTransitionEffect(JazzyHelper.SLIDE_IN); mLvProvicne.setAdapter(mAdapterProvicne); mLvCity.setAdapter(mAdapterCity); mLvTown.setAdapter(mAdapterTown); } @Background void getProvicneList() { List<BaseCityModel> baseCityModels = new ArrayList<BaseCityModel>(); baseCityModels.addAll(SLAppication.getProvicneModels()); updateList(1, baseCityModels); } @Background void getCityList(String id) { List<BaseCityModel> baseCityModels = new ArrayList<BaseCityModel>(); baseCityModels.addAll(getCurCityList(id)); updateList(2, baseCityModels); } @Background void getAreaList(String id) { List<BaseCityModel> baseCityModels = new ArrayList<BaseCityModel>(); baseCityModels.addAll(getCurAreaList(id)); updateList(3, baseCityModels); } @UiThread void updateList(int type, List<BaseCityModel> models) { switch (type) { case 1: mAdapterProvicne.appendToList(models); break; case 2: mAdapterCity.appendToList(models); break; case 3: mAdapterTown.appendToList(models); break; } } /** * 获取当前省-城市列表信息 * * @param id */ private List<CityModel> getCurCityList(String id) { for (ProvicneModel model : SLAppication.getProvicneModels()) { if (model.getCityId().equals(id)) { mCurCityModels = model.getCityModels(); } } return mCurCityModels; } /** * 获取当前城市-地区列表信息 * * @param id */ private List<AreaModel> getCurAreaList(String id) { for (CityModel model : mCurCityModels) { if (model.getCityId().equals(id)) { mCurAreaModels = model.getAreaModels(); } } return mCurAreaModels; } /** * 获取当前地区信息 * * @param id * @return */ private void setCurArea(String id) { for (AreaModel model : mCurAreaModels) { if (model.getCityId().equals(id)) { mCurAreaModel = model; } } } /** * 添加内容动画 */ private void addContentAnim() { mTransition = new LayoutTransition(); mTransition.setDuration(ANIM_DURATON); mTransition.addTransitionListener(new LayoutTransition.TransitionListener() { @Override public void startTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) { } @Override public void endTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) { } }); mLLCityContent.setLayoutTransition(mTransition); } @ItemClick(R.id.lv_area1) void provicneItemClick(BaseCityModel model) { // 清除数据 mAdapterTown.clear(); // 获取数据 tvArea1.setText(model.getCityName()); getCityList(model.getCityId()); mllSelectCity.setVisibility(View.VISIBLE); tvArea1.setVisibility(View.VISIBLE); tvArea2.setVisibility(View.INVISIBLE); tvArea3.setVisibility(View.INVISIBLE); mLvCity.setVisibility(View.VISIBLE); mLvTown.setVisibility(View.GONE); } @ItemClick(R.id.lv_area2) void cityItemClick(BaseCityModel model) { // 获取数据 tvArea2.setText(model.getCityName()); getAreaList(model.getCityId()); tvArea2.setVisibility(View.VISIBLE); tvArea3.setVisibility(View.INVISIBLE); mLvTown.setVisibility(View.VISIBLE); } @ItemClick(R.id.lv_area3) void areaItemClick(BaseCityModel model) { tvArea3.setVisibility(View.VISIBLE); tvArea3.setText(model.getCityName()); setCurArea(model.getCityId()); addCity(SLAppication.addMyArea(mCurAreaModel)); } private void addCity(String msg) { if (msg == null) { } else if (msg.equals(getString(R.string.city_add_success))) { setResult(1); finish(); } else { ToastUtil.showShort(msg); } } }