国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android省市區三級聯動控件使用方法實例講解

2019-12-12 04:07:47
字體:
來源:轉載
供稿:網友

 最近有需求需要實現省市區三級聯動,但是發現之前的實現不夠靈活,自己做了一些優化。為了方便以后使用,抽離出來放在了github上WheelView。同時把其核心庫放在了JCenter中了,可以直接引用。也可以參考項目中的Demo進行引用

  下面介紹一下如何使用

  如果用的是AndroidStudio那么直接在build.gradle文件中添加依賴:

dependencies { compile 'chuck.WheelItemView:library:1.0.1' }

  成功引入庫之后,可以在需要彈出省市區選擇框的頁面生成一AddressPickerView 實例。   

pickerView = new AddressPickerView(this);

  下面來說說需要的數據源,我對數據做了抽象,在使用的時候,將自己的數據model實現IWheelViewModel接口就可以了,如下:   

public class AddressModel implements IWheelViewModel { public String addressName; public String addressId; @Override public String getValueString() {  return addressName; } @Override public String getValueId() {  return addressId; }}

  而后,就是講你自己從服務器或者本地數據庫得到到的數據按照一定的格式組件成三級數據List,這里可能會有一點復雜,需要在組裝的過程中小心一定,省市區要對應不然數據會錯亂。組裝數據源,最后得到省市區對應的List:   

 private List<IWheelViewModel> mOneItems = new ArrayList<>(); private List<List<IWheelViewModel>> mTwoItems; private List<List<List<IWheelViewModel>>> mThreeItems;

  將數據源填充到View中:

//設置三級數據  pickerView.setPickerData(mOneItems, mTwoItems, mThreeItems, true);

  給確定和關閉按鈕設置監聽:   

pickerView.setOnPickerSelectListener(new OnPickerSelectListener() {   @Override   public void onSelect(int pos1, int pos2, int pos3) {    String resultOne, resultTwo, resultThree;    resultOne = mOneItems.get(pos1).getValueString();    resultTwo = mTwoItems.get(pos1).get(pos2).getValueString();    resultThree = mThreeItems.get(pos1).get(pos2).get(pos3).getValueString();    Toast.makeText(MainActivity.this, resultOne + resultTwo + resultThree, Toast.LENGTH_SHORT).show();   }  });  pickerView.setOnDismissListener(new OnDismissListener() {   @Override   public void onDismiss(Object o) {   }  });

  如果不做特殊的設置,選中字體和非中字體都有默認的顏色和大小,如果想改變這些屬性,我也在AddressPickerView中提供了對應的方法:   

/**  * 被選中Item的字體大小  *  * @param size  */ public void setSelectTextSize(int size)  /**  * 被選中Item字體顏色  *  * @param color  */ public void setSelectTextColor(int color)  /**  * 被選中Item的字體大小  *  * @param size dimen中定義的Size大小  */ public void setUnselectTextSize(int size)  /**  * 被選中Item字體顏色  *  * @param colorId  */ public void setUnselectTextColor(int colorId)

  設置完這些屬性之后,直接調用show()方法就可以彈出這個選擇框了。 

  完整的代碼:   

public class MainActivity extends AppCompatActivity { AddressPickerView pickerView; private List<IWheelViewModel> mOneItems = new ArrayList<>(); private List<List<IWheelViewModel>> mTwoItems; private List<List<List<IWheelViewModel>>> mThreeItems; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  initData();  //創建實例  pickerView = new AddressPickerView(this);  //設置title  pickerView.setTitle("收貨地址");  //設置被選中文字的顏色  pickerView.setSelectTextColor(R.color.green);  pickerView.setSelectTextSize(R.dimen.select_text_size);  pickerView.setUnselectTextColor(R.color.address_view_confirm_text_color);  pickerView.setUnselectTextSize(R.dimen.unselect_text_size);  //設置三級數據  pickerView.setPickerData(mOneItems, mTwoItems, mThreeItems, true);  //設置確定和關閉監聽  pickerView.setOnPickerSelectListener(new OnPickerSelectListener() {   @Override   public void onSelect(int pos1, int pos2, int pos3) {    String resultOne, resultTwo, resultThree;    resultOne = mOneItems.get(pos1).getValueString();    resultTwo = mTwoItems.get(pos1).get(pos2).getValueString();    resultThree = mThreeItems.get(pos1).get(pos2).get(pos3).getValueString();    Toast.makeText(MainActivity.this, resultOne + resultTwo + resultThree, Toast.LENGTH_SHORT).show();   }  });  pickerView.setOnDismissListener(new OnDismissListener() {   @Override   public void onDismiss(Object o) {   }  }); } private void initData() {  AddressModel model = new AddressModel();  model.addressName = "北京";  mOneItems.add(model);  AddressModel model1 = new AddressModel();  model1.addressName = "湖北";  mOneItems.add(model1);  AddressModel model2 = new AddressModel();  model2.addressName = "河北";  mOneItems.add(model2);  mTwoItems = new ArrayList<>();  List<IWheelViewModel> l21 = new ArrayList<>();  AddressModel model21 = new AddressModel();  model21.addressName = "北京市";  l21.add(model21);  List<IWheelViewModel> l22 = new ArrayList<>();  AddressModel model221 = new AddressModel();  model221.addressName = "武漢";  AddressModel model222 = new AddressModel();  model222.addressName = "襄陽";  AddressModel model223 = new AddressModel();  model223.addressName = "十堰";  AddressModel model224 = new AddressModel();  model224.addressName = "孝感";  AddressModel model225 = new AddressModel();  model225.addressName = "荊州";  l22.add(model221);  l22.add(model222);  l22.add(model223);  l22.add(model224);  l22.add(model225);  List<IWheelViewModel> l23 = new ArrayList<>();  AddressModel model231 = new AddressModel();  model231.addressName = "石家莊";  AddressModel model232 = new AddressModel();  model232.addressName = "邯鄲";  AddressModel model233 = new AddressModel();  model233.addressName = "秦皇島";  AddressModel model234 = new AddressModel();  model234.addressName = "保定";  AddressModel model235 = new AddressModel();  model235.addressName = "張家口";  l23.add(model231);  l23.add(model232);  l23.add(model233);  l23.add(model234);  l23.add(model235);  mTwoItems.add(l21);  mTwoItems.add(l22);  mTwoItems.add(l23);  mThreeItems = new ArrayList<>();  List<IWheelViewModel> l31 = new ArrayList<>();  for (int i = 0; i < 10; i++) {   AddressModel model3 = new AddressModel();   model3.addressName = "北京市" + i;   l31.add(model3);  }  List<List<IWheelViewModel>> list21 = new ArrayList<>();  list21.add(l31);  mThreeItems.add(list21);  for (int k = 0; k < 2; k++) {   List<List<IWheelViewModel>> temp = new ArrayList<>();   for (int j = 0; j < 5; j++) {    List<IWheelViewModel> temp1 = new ArrayList<>();    for (int i = 0; i < 10; i++) {     AddressModel model111 = new AddressModel();     model111.addressName = "地區" + i;     temp1.add(model111);    }    temp.add(temp1);   }   mThreeItems.add(temp);  } } public void onClick(View view) {  pickerView.show(); }}

  這些代碼可以參考demo,實際上,這里只是實現了省市區的三級聯動,還可以自己參考AddressPickerView定制自己想要的滾動選擇框。這里只討論省市區這種場景,其他的場景可以自己實現。

  如果覺得有用,歡迎star,如果覺得有問題,歡迎給出建議。

  https://github.com/hgchenkai/WheelView

以上所述是小編給大家介紹的Android省市區三級聯動控件使用方法實例講解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 类乌齐县| 昌吉市| 扶风县| 景宁| 佳木斯市| 宜良县| 永年县| 富蕴县| 万宁市| 青阳县| 曲沃县| 大姚县| 鄂尔多斯市| 梁平县| 陈巴尔虎旗| 额济纳旗| 封开县| 德格县| 武山县| 容城县| 郎溪县| 汽车| 榆中县| 灌云县| 中宁县| 从江县| 个旧市| 霍城县| 蚌埠市| 大埔区| 东乡| 灵台县| 吴江市| 罗江县| 榆社县| 扎兰屯市| 沁水县| 巨鹿县| 泾阳县| 海口市| 邹平县|