最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

 最近有需求需要實(shí)現(xiàn)省市區(qū)三級聯(lián)動,但是發(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ù)會錯亂。組裝數(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)動,還可以自己參考AddressPickerView定制自己想要的滾動選擇框。這里只討論省市區(qū)這種場景,其他的場景可以自己實(shí)現(xiàn)。

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

  https://github.com/hgchenkai/WheelView

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

相關(guān)文章

最新評論

湖北省| 乃东县| 中江县| 曲阳县| 寻乌县| 利辛县| 开平市| 永州市| 盐池县| 海淀区| 岗巴县| 聊城市| 万源市| 苍山县| 舒城县| 布尔津县| 沈阳市| 应用必备| 道真| 句容市| 苍山县| 格尔木市| 南岸区| 依兰县| 龙陵县| 台前县| 龙海市| 临泽县| 洮南市| 凤翔县| 准格尔旗| 剑阁县| 鄂托克前旗| 左云县| 龙门县| 天长市| 天等县| 新民市| 鄂州市| 章丘市| 年辖:市辖区|