欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android省市區(qū)三級聯(lián)動(dòng)控件使用方法實(shí)例講解

 更新時(shí)間:2017年01月05日 08:51:57   作者:ChuckChenLw  
最近有需求需要實(shí)現(xiàn)省市區(qū)三級聯(lián)動(dòng),但是發(fā)現(xiàn)之前的實(shí)現(xiàn)不夠靈活,自己做了一些優(yōu)化。下面通過實(shí)例代碼給大家介紹下Android省市區(qū)三級聯(lián)動(dòng)控件使用方法

 最近有需求需要實(shí)現(xiàn)省市區(qū)三級聯(lián)動(dòng),但是發(fā)現(xiàn)之前的實(shí)現(xiàn)不夠靈活,自己做了一些優(yōu)化。為了方便以后使用,抽離出來放在了github上WheelView。同時(shí)把其核心庫放在了JCenter中了,可以直接引用。也可以參考項(xiàng)目中的Demo進(jìn)行引用

  下面介紹一下如何使用

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

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

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

pickerView = new AddressPickerView(this);

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

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

  而后,就是講你自己從服務(wù)器或者本地?cái)?shù)據(jù)庫得到到的數(shù)據(jù)按照一定的格式組件成三級數(shù)據(jù)List,這里可能會有一點(diǎn)復(fù)雜,需要在組裝的過程中小心一定,省市區(qū)要對應(yīng)不然數(shù)據(jù)會錯(cuò)亂。組裝數(shù)據(jù)源,最后得到省市區(qū)對應(yīng)的List:   

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

  將數(shù)據(jù)源填充到View中:

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

  給確定和關(guān)閉按鈕設(shè)置監(jiān)聽:   

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) {
   }
  });

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

/**
  * 被選中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)

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

  完整的代碼:   

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();
  //創(chuàng)建實(shí)例
  pickerView = new AddressPickerView(this);
  //設(shè)置title
  pickerView.setTitle("收貨地址");
  //設(shè)置被選中文字的顏色
  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);
  //設(shè)置三級數(shù)據(jù)
  pickerView.setPickerData(mOneItems, mTwoItems, mThreeItems, true);
  //設(shè)置確定和關(guān)閉監(jiān)聽
  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 = "地區(qū)" + i;
     temp1.add(model111);
    }
    temp.add(temp1);
   }
   mThreeItems.add(temp);
  }
 }
 public void onClick(View view) {
  pickerView.show();
 }
}

  這些代碼可以參考demo,實(shí)際上,這里只是實(shí)現(xiàn)了省市區(qū)的三級聯(lián)動(dòng),還可以自己參考AddressPickerView定制自己想要的滾動(dòng)選擇框。這里只討論省市區(qū)這種場景,其他的場景可以自己實(shí)現(xiàn)。

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

  https://github.com/hgchenkai/WheelView

以上所述是小編給大家介紹的Android省市區(qū)三級聯(lián)動(dòng)控件使用方法實(shí)例講解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android測試方法總結(jié)

    Android測試方法總結(jié)

    在這篇文章中我們給大家總結(jié)了Android測試方法以及需要注意的地方,有興趣的朋友參考學(xué)習(xí)下。
    2018-07-07
  • android 將圖片壓縮到指定的大小的示例

    android 將圖片壓縮到指定的大小的示例

    本篇文章主要介紹了android 將圖片壓縮到指定的大小的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Android開發(fā)者常見的UI組件總結(jié)大全

    Android開發(fā)者常見的UI組件總結(jié)大全

    Android開發(fā)中UI組件是構(gòu)建用戶界面的基本元素,下面這篇文章主要給大家介紹了關(guān)于Android開發(fā)者常見的UI組件總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Android上使用jspf插件框架的方法

    Android上使用jspf插件框架的方法

    這篇文章主要介紹了Android上使用jspf插件框架的方法,實(shí)例分析了jspf插件框架的功能與使用技巧,需要的朋友可以參考下
    2015-06-06
  • Android實(shí)現(xiàn)USB掃碼槍獲取掃描內(nèi)容

    Android實(shí)現(xiàn)USB掃碼槍獲取掃描內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)USB掃碼槍獲取掃描內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • android 復(fù)制 粘貼 剪切功能應(yīng)用

    android 復(fù)制 粘貼 剪切功能應(yīng)用

    網(wǎng)上有很多android 復(fù)制 粘貼 剪切功能的文章,只是放到自己的程序中不知道如何處理,現(xiàn)在尋得一可行方法,需要的朋友可以參考下
    2012-11-11
  • android開發(fā)仿ios的UIScrollView實(shí)例代碼

    android開發(fā)仿ios的UIScrollView實(shí)例代碼

    下面小編就為大家分享一篇android開發(fā)仿ios的UIScrollView實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android將Glide動(dòng)態(tài)加載不同大小的圖片切圓角與圓形的方法

    Android將Glide動(dòng)態(tài)加載不同大小的圖片切圓角與圓形的方法

    這篇文章主要給大家介紹了關(guān)于Android如何將Glide動(dòng)態(tài)加載不同大小的圖片切圓角與圓形的方法,文中通過示例代碼介紹的非常吸納關(guān)系,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Android實(shí)現(xiàn)可播放GIF動(dòng)畫的ImageView

    Android實(shí)現(xiàn)可播放GIF動(dòng)畫的ImageView

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可播放GIF動(dòng)畫的ImageView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Flutter定時(shí)器、倒計(jì)時(shí)的快速上手及實(shí)戰(zhàn)講解

    Flutter定時(shí)器、倒計(jì)時(shí)的快速上手及實(shí)戰(zhàn)講解

    這篇文章主要給大家介紹了關(guān)于Flutter定時(shí)器、倒計(jì)時(shí)的快速上手及實(shí)戰(zhàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論