HarmonyOS picker选择器的数据源问题

官方代码如下:

@Entry
@Component
struct TextPickerExample {
  private select: number = 1
  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4']

  build() {
    Column() {
      TextPicker({ range: this.fruits, selected: this.select })
        .onChange((value: string, index: number) => {
          console.info('Picker item changed, value: ' + value + ', index: ' + index)
        })
    }
  }
}

我想请问一下,这种选择器数据源里边的元素就只能是string类型吗?

一般的数据源里边的元素都是对象类型的呀,比如说省市区选择器,省市区的名称我只在前端展示的时候使用,业务逻辑肯定用的是对应的编码,这种我还得从对象里边把名称取出来组装成字符串数组,再根据被选中的索引值去数据源里边获取对应的对象,再获取对象里面的编码,好麻烦啊

HarmonyOS
18h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

当前textPicker不支持label/value形式:

可以获取选择器值的索引,根据索引自行封装映射

下面一个demo可以参考:

interface Fruits {
  id: number
  name: string
}

@Entry
@Component
struct TextPickerExample {
  private select: number = 1
  private fruitsList: Fruits[] = [
    { id: 1, name: "apple1" },
    { id: 2, name: "orange2" },
    { id: 3, name: "peach3" },
    { id: 4, name: "grape4" },
  ]

  build() {
    Column() {
      TextPicker({ range: this.fruitsList.map((item) => item.name), selected: this.select })
        .onChange((value: string | string[], index: number | number[]) => {
          console.info('Picker item changed, value: ' + value + ', index: ' + index)
          this.fruitsList[index.toString()].id;
        })
        .disappearTextStyle({ color: Color.Red, font: { size: 15, weight: FontWeight.Lighter } })
        .textStyle({ color: Color.Black, font: { size: 20, weight: FontWeight.Normal } })
        .selectedTextStyle({ color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder } })
    }.width('100%').height('100%')
  }
}
分享
微博
QQ
微信
回复
15h前
相关问题
HarmonyOS图片选择器相关问题
498浏览 • 1回复 待解决
lazyforeach替换数据源解决方案
740浏览 • 1回复 待解决
HarmonyOS 图片选择器怎么实现
73浏览 • 1回复 待解决
HarmonyOS 有状态选择器
40浏览 • 1回复 待解决
TimePicker如何设置时间选择器范围?
7023浏览 • 1回复 待解决
HarmonyOS web如何拉起图库选择器
32浏览 • 1回复 待解决
HarmonyOS 日期/日历/时间选择器开发
544浏览 • 1回复 待解决
HarmonyOS 地区选择器多级列表效果
417浏览 • 1回复 待解决