HarmonyOS 鸿蒙Next 城市对象数据本地重构排序
HarmonyOS 鸿蒙Next 城市对象数据本地重构排序
//“region_id”: 110000,
//“region_name”: “北京”
region_id: Number;
region_name: string;
constructor() {
this.region_id = 0;
this.region_name = “”;
}
}
CityDataList =CityData []
示例数据:
[
{
“region_id”: 110000,
“region_name”: “北京”
},
{
“region_id”: 110100,
“region_name”: “北京市”
},
{
“region_id”: 220100,
“region_name”: “长春市”
},
{
“region_id”: 220200,
“region_name”: “吉林市”
},
{
“region_id”: 220300,
“region_name”: “四平市”
},
{
“region_id”: 220500,
“region_name”: “通化市”
}
]
如何对 CityDataList 本地重构排序。按abc字母拍。并实现list ForEach 展示的时候。字母首次 展示出来。
B
北京
北京市
C
长春市
J
吉林市
S
四平市
T
通化市
更多关于HarmonyOS 鸿蒙Next 城市对象数据本地重构排序的实战教程也可以访问 https://www.itying.com/category-93-b0.html
建议后台将数据结构调整一下,带上首字母,以下为示例代码:
class CarTable {
title: string = ''
projects: string[] = []
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct AlphabetIndexPage {
private value: string[] = ['选', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z']
[@State](/user/State) selectedIndex: number = 0
[@State](/user/State) showDialog:boolean=false
[@State](/user/State) isSelectIndexer: boolean = false
listScroller: ListScroller = new ListScroller()
private carList: CarTable[] = [
{
title: 'A',
projects: ['奥迪', '埃安', 'AITO', '阿斯顿马丁', '阿尔法罗密欧', '阿维塔', '爱驰', 'Aria', 'ATS', 'Aspark', '阿尔特', 'AIM']
},
{
title: 'B',
projects: ['奔驰', '宝马', '本田', '别克', '比亚迪', '保时捷', '北京', '标致', '宾利', '宝骏', '奔腾', '宝沃', '布加迪']
},
{
title: 'C',
projects: ['长安', '起源', '长城', '创维', '成功', '车池', '刺猬', '长江', 'Canoo', '曹操', 'Cupra', '程式']
},
{
title: 'D',
projects: ['大众', '东风风行', '东风风神', '东风风行', '东风风神', '东风风行', '东风风神', '大发', '大运', '东南', 'DS']
},
{
title: 'E',
projects: ['Electra', 'E-lengend', 'ego', 'Edison']
},
{
title: 'F',
projects: ['丰田', '福特', '飞凡', '方程', '飞凡', '方程', '菲亚特', '法拉利']
}
]
[@Builder](/user/Builder)
itemHead(text: string) {
Text(text)
.fontSize(20)
.backgroundColor(0xAABBCC)
.width("100%")
.padding(10)
}
build() {
Stack({ alignContent: Alignment.Start }) {
Row() {
List({ space: 0, initialIndex: 0, scroller: this.listScroller }) {
ForEach(this.carList, (item: CarTable) => {
ListItemGroup({ header: this.itemHead(item.title) }) {
ForEach(item.projects, (project: string) => {
ListItem() {
Text(project)
.width("100%")
.height(60)
}
}, (item: string) => item)
}
})
}
.width('70%')
.height('100%')
.sticky(StickyStyle.Header)
.scrollBar(BarState.Off)
.edgeEffect(EdgeEffect.None)
.onScrollIndex((start: number, end: number) => {
if (!this.isSelectIndexer) {
this.showDialog=false
this.selectedIndex = start + 1
}
})
AlphabetIndexer({ arrayValue: this.value, selected: 0 })
.selected(this.selectedIndex)
.selectedColor(0xFFFFFF)// 选中项文本颜色
.selectedBackgroundColor(0xCCCCCC)// 选中项背景颜色
.usingPopup(true) // 是否显示弹出框
.selectedFont({ size: 16, weight: FontWeight.Bolder })// 选中项字体样式
.itemSize(28)// 每一项的尺寸大小
.onSelect((index: number) => {
this.showDialog = true
this.isSelectIndexer = true
this.listScroller.scrollToItemInGroup(index - 1, 0, true)
})
}
.width('100%')
.height('100%')
}
}
}
更多关于HarmonyOS 鸿蒙Next 城市对象数据本地重构排序的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next 城市对象数据本地重构排序的问题,以下是一些专业解答:
在HarmonyOS鸿蒙系统中,对城市对象数据进行本地重构排序通常涉及对存储在城市数据集合(如数组或Map)中的元素进行排序操作。
若数据存储在Map对象中,首先获取所有的key(城市名称或其他标识符),然后使用keySet()方法将其转换为List。接着,利用Collections.sort()或List.sort()方法对List进行排序。排序完成后,根据排序后的List重新构建一个LinkedHashMap,以保持插入顺序即排序后的顺序。
若数据存储在数组中,可以直接使用数组的sort()方法进行排序。若需要按照特定规则排序(如按城市名称的字母顺序),可以传入一个比较函数作为sort()方法的参数。
请注意,排序操作可能会因数据量的大小和排序规则的复杂度而影响性能。因此,在进行大规模数据排序时,需要考虑性能优化策略。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html