IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> HarmonyOS开发46:Picker滑动选择器组件案例 -> 正文阅读

[系统运维]HarmonyOS开发46:Picker滑动选择器组件案例

ability_main.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="horizontal">

    <Picker
        ohos:id="$+id:province"
        ohos:height="match_content"
        ohos:width="100vp"
        ohos:normal_text_size="20fp"
        ohos:selected_text_size="20fp"
        ohos:value="0"/>

    <Picker
        ohos:id="$+id:city"
        ohos:height="match_content"
        ohos:width="100vp"
        ohos:left_margin="10vp"
        ohos:normal_text_size="20fp"
        ohos:selected_text_size="20fp"
        ohos:value="0"/>

    <Picker
        ohos:id="$+id:district"
        ohos:height="match_content"
        ohos:width="100vp"
        ohos:left_margin="10vp"
        ohos:normal_text_size="20fp"
        ohos:selected_text_size="20fp"
        ohos:value="0"/>

</DirectionalLayout>

在这里插入图片描述
建一个省的javabean类,记录省份名字和包含的市

package com.example.pickerapplication.domain;

import java.util.ArrayList;

public class Province {
    //1.省份名字
    private String name;
    //2.集合,记录省份里面所有城市的名字
    private ArrayList<String> list;

    public Province() {
    }

    public Province(String name, ArrayList<String> list) {
        this.name = name;
        this.list = list;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ArrayList<String> getList() {
        return list;
    }

    public void setList(ArrayList<String> list) {
        this.list = list;
    }
}

MainAbilitySlice.java代码:

package com.example.pickerapplication.slice;

import com.example.pickerapplication.ResourceTable;
import com.example.pickerapplication.domain.Province;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Picker;

import java.util.ArrayList;

public class MainAbilitySlice extends AbilitySlice implements Picker.ValueChangedListener {
    Picker province;
    Picker city;
    Picker district;
    ArrayList<Province> provinceList;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        //1.找到三个组件
        province = (Picker) findComponentById(ResourceTable.Id_province);
        city = (Picker) findComponentById(ResourceTable.Id_city);
        district = (Picker) findComponentById(ResourceTable.Id_district);

        //2.创建集合,存储省市区
        //省市的联动
        provinceList = getData();


        //3.给三个滑动选择设置默认显示数据
        //要告诉滑动选择器最大值选择多少
        province.setMaxValue(provinceList.size() - 1);
        //暂时只给前面的省市设置
        province.setFormatter(i -> provinceList.get(i).getName());

        //要告诉滑动选择器最大值选择多少
        city.setMaxValue(provinceList.get(0).getList().size() - 1);
        city.setFormatter(i -> provinceList.get(0).getList().get(i));

        //给picker滑动选择器绑定监听
        province.setValueChangedListener(this);

    }

    //参数一:表示当前数据变动的那个滑动选择器对象
    //参数二:旧值(原来选择的值)
    //参数三:新值(现在选择的值)
    @Override
    public void onValueChanged(Picker picker, int oldValue, int newValue) {
        if (picker == province) {
            //判断当前选择是那个省
            //选择哪个省,就把当前省对应的市设置到第二个滑动选择器

            //获取到当前省份的对象
            Province chooseProvince = provinceList.get(newValue);

            //设置城市的滑动选择器
            city.setMaxValue(chooseProvince.getList().size() - 1);
            city.setFormatter(i -> chooseProvince.getList().get(i));

            //当前面更换省份的时候,中间的城市从第一个展示
            city.setValue(0);

        }
    }

    //在以后,这些数据不需要手动书写,一般是服务器传递过来
    public ArrayList<Province> getData() {
        //创建一个集合存储所有省份
        ArrayList<Province> provinceList = new ArrayList<>();

        //创建一个江苏省的集合,存储所有城市
        ArrayList<String> jiangSuCitys = new ArrayList<>();
        jiangSuCitys.add("南京市");
        jiangSuCitys.add("苏州市");
        jiangSuCitys.add("无锡市");
        jiangSuCitys.add("扬州市");
        jiangSuCitys.add("徐州市");

        ArrayList<String> zheJiangCitys = new ArrayList<>();
        zheJiangCitys.add("杭州市");
        zheJiangCitys.add("宁波市");
        zheJiangCitys.add("温州市");
        zheJiangCitys.add("绍兴市");
        zheJiangCitys.add("嘉兴市");
        zheJiangCitys.add("舟山市");

        ArrayList<String> fuJianCitys = new ArrayList<>();
        fuJianCitys.add("福州市");
        fuJianCitys.add("厦门市");
        fuJianCitys.add("泉州市");
        fuJianCitys.add("莆田市");
        fuJianCitys.add("宁德市");
        fuJianCitys.add("龙岩市");

        //添加省份到provinceList
        provinceList.add(new Province("江苏省", jiangSuCitys));
        provinceList.add(new Province("浙江省", zheJiangCitys));
        provinceList.add(new Province("福建省", fuJianCitys));

        //把存储所有省份的集合返回
        return provinceList;
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }


}

结果演示:

请添加图片描述

省市区三级联动只要再把区嵌套到市里面即可,思路一样

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:52:26  更:2021-08-22 13:54:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:54:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计