import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; import com...Contants; import com...R; import com...domain.AdressInfo; import com...ui.activity.LotteryBaseActivity; import com...ui.widget.wheel.AbstractWheelTextAdapter; import com...ui.widget.wheel.OnWheelChangedListener; import com...ui.widget.wheel.WheelView; import java.util.ArrayList; /** * 归属地选择对话框 */ public class AdressDialog extends LotteryBaseActivity implements OnClickListener { private WheelView mProvinceWv, mCityWv, mCountyWv; private ArrayWheelAdapter mProvinceAdapter, mCityAdapter, mCountyAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.adressdialog); Button cancelBtn = (Button) findViewById(R.id.btn_adressdialog_cancel); cancelBtn.setOnClickListener(this); Button okBtn = (Button) findViewById(R.id.btn_adressdialog_ok); okBtn.setOnClickListener(this); WindowManager m = getWindowManager(); Display d = m.getDefaultDisplay(); android.view.WindowManager.LayoutParams p = getWindow().getAttributes(); p.y = 0; p.width = d.getWidth(); p.gravity = Gravity.BOTTOM; getWindow().setAttributes(p); String fullname = getIntent().getStringExtra("fullname"); mProvinceWv = (WheelView) findViewById(R.id.wv_adressdialog_province); mProvinceWv.setVisibleItems(5); mProvinceWv.setShowLeftLine(true); mProvinceAdapter = new ArrayWheelAdapter(this, mAdressDao.getProvinces()); mProvinceWv.setViewAdapter(mProvinceAdapter); mProvinceWv.setCyclic(true); mProvinceWv.addChangingListener(new OnWheelChangedListener() { public void onChanged(WheelView wheel, int oldValue, int newValue) { mCityAdapter = new ArrayWheelAdapter(AdressDialog.this, mAdressDao.getCitys(mProvinceAdapter.getId(mProvinceWv.getCurrentItem()))); mCityWv.setViewAdapter(mCityAdapter); mCityWv.setCurrentItem(mCityAdapter.getItemsCount() / 2); } }); mCityWv = (WheelView) findViewById(R.id.wv_adressdialog_city); mCityWv.setVisibleItems(5); mCityWv.setShowLeftLine(false); mCityAdapter = new ArrayWheelAdapter(this, mAdressDao.getCitys(mProvinceAdapter.getId(mProvinceWv.getCurrentItem()))); mCityWv.setViewAdapter(mCityAdapter); mCityWv.setCyclic(true); mCityWv.addChangingListener(new OnWheelChangedListener() { public void onChanged(WheelView wheel, int oldValue, int newValue) { mCountyAdapter = new ArrayWheelAdapter(AdressDialog.this, mAdressDao.getCountys(mCityAdapter.getId(mCityWv.getCurrentItem()))); mCountyWv.setViewAdapter(mCountyAdapter); mCountyWv.setCurrentItem(mCountyAdapter.getItemsCount() / 2); } }); mCountyWv = (WheelView) findViewById(R.id.wv_adressdialog_county); mCountyWv.setVisibleItems(5); mCountyWv.setShowLeftLine(false); mCountyAdapter = new ArrayWheelAdapter(this, mAdressDao.getCountys(mCityAdapter.getId(mCityWv.getCurrentItem()))); mCountyWv.setViewAdapter(mCountyAdapter); mCountyWv.setCyclic(true); mProvinceWv.setCurrentItem(mProvinceAdapter.getItemsCount() / 2); mCityWv.setCurrentItem(mCityAdapter.getItemsCount() / 2); mCountyWv.setCurrentItem(mCountyAdapter.getItemsCount() / 2); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_adressdialog_cancel: finish(); break; case R.id.btn_adressdialog_ok: String province = mProvinceAdapter.getItemText(mProvinceWv.getCurrentItem()).toString(); String city = mCityAdapter.getItemText(mCityWv.getCurrentItem()).toString(); String county = mCountyAdapter.getItemText(mCountyWv.getCurrentItem()).toString(); String countyFullname = mCountyAdapter.getItemFullname(mCountyWv.getCurrentItem()).toString(); Intent data = new Intent(); data.putExtra("adressName", province + " " + city + " " + county); data.putExtra("fullname", countyFullname); data.putExtra("adressId", mCountyAdapter.getCode(mCountyWv.getCurrentItem())); setResult(Contants.ACTIVITY_CODE_ADRESS, data); finish(); break; } } /** * 滑动内容adapter */ private class ArrayWheelAdapter extends AbstractWheelTextAdapter { private ArrayList<AdressInfo> infos = new ArrayList<AdressInfo>(); public int getPositionByName(String adress) { int len = infos.size(); for (int i = 0; i < len; i++) { if (adress.equals(infos.get(i).name)) { return i; } } return 0; } protected ArrayWheelAdapter(Context context) { super(context, R.layout.adressdialog_item, NO_RESOURCE); } public ArrayWheelAdapter(Context context, ArrayList<AdressInfo> infos) { super(context, R.layout.adressdialog_item, NO_RESOURCE); this.infos = infos; } @Override public View getItem(int position, View cachedView, ViewGroup parent) { View view = super.getItem(position, cachedView, parent); TextView tv = (TextView) view.findViewById(R.id.tv_adressdialog_item); tv.setText(infos.get(position).name); return view; } @Override public int getItemsCount() { return infos.size(); } @Override protected CharSequence getItemText(int position) { if (infos.size() > 0 && position < infos.size()) { return infos.get(position).name; } return ""; } public String getItemFullname(int position) { if (infos.size() > 0 && position < infos.size()) { return
Android:三级城市联动控件
最新推荐文章于 2024-09-12 15:15:31 发布