在颤动/飞镖中映射多个列表?
问题描述:
我有SWIFT代码,我在其中映射了一组列表,其中1个列表是int列表,并且它们按降序映射。这是我的SWIFT代码...在颤动/飞镖中映射多个列表?
class Video
{
let videoID: String
let rank: Int
let title: String
let imageString: String
init(videoID: String, rank: Int, title: String, imageString: String)
{
self.videoID = videoID
self.rank = rank
self.title = title
self.imageString = imageString
}
}
var videos = [Video]()
videos.sort { $0.rank < $1.rank }
self.vidTitleArray = videos.map { $0.title }
self.vidRankArray = videos.map { $0.rank }
self.vidIdArray = videos.map { $0.videoID }
self.vidImageArray = videos.map { $0.imageString }
这是我在扑哪里,但我得到的错误前进......
class videos{
String videoId;
int rank;
String title;
String imageString;
videos(this.videoId, this.rank, this.title, this.imageString);
}
我如何做一个list
从类构造函数然后重新排列所有元素降序排列映射到?
***** OPTION *****
这是我不使用Video
类代码。我得到它排名正确使用SplayTreeMap
但如果Value
永远是相同的,它只会带回1个节点。有没有办法映射所有4个地图降序Value
?
Map myMap = event.data.snapshot.value; //存储每个地图
var titles = myMap.values;
List onesTitles = new List();
List onesIds = new List();
List onesImages = new List();
List onesRank = new List();
for (var items in titles) {
onesTitles.add(items['vidTitle']);
onesIds.add(items['vidId']);
onesImages.add(items['vidImage']);
onesRank.add(items['Value']);
}
names = onesTitles;
ids = onesIds;
numbers = onesRank;
vidImages = onesImages;
答
您可以使用List.sort()
为此,我已经创建,我硬编码的Videos
类的3个实例自定义的例子,然后在上升增加他们在我的构建方法是在List
订购。使用List.sort()
和compareTo
,我可以按降序重新排列它们。
List<Videos> myList = [_firstVideos, _secondVideos, _thirdVideos];
sort() {
for (var video in myList) {
print(video.rank); ///prints 1 2 3
}
myList.sort((y, x) => x.rank.compareTo(y.rank));
for (var video in myList) {
print(video.rank); ///prints 3 2 1
}
}
...
import 'package:flutter/material.dart';
void main(){
runApp(new MaterialApp(home: new MyApp(),));
}
class MyApp extends StatelessWidget {
Videos _firstVideos = new Videos(
videoId: "0001",
rank: 1,
title: "My First Video",
imageString: "My First Image",
);
Videos _secondVideos = new Videos(
videoId: "0002",
rank: 2,
title: "My Seocnd Video",
imageString: "My Second Image",
);
Videos _thirdVideos = new Videos(
videoId: "0003",
rank: 3,
title: "My Third Video",
imageString: "My Third Image",
);
@override
Widget build(BuildContext context) {
List<Videos> myList = [_firstVideos,_secondVideos,_thirdVideos];
sort()
{
myList.sort((y,x)=>x.rank.compareTo(y.rank));
print(myList[0].title);
}
return new Scaffold(
body: new Center(
child: new FlatButton(onPressed: sort, child: new Text("Sort")),
),
);
}
}
class Videos{
String videoId;
int rank;
String title;
String imageString;
Videos({this.videoId, this.rank, this.title, this.imageString});
}
+0
@azia请看看我添加的其他'OPTION'。我试图排序而不建立'Video'列表 –
我已经编辑了答案,使其了解如何使用List.sort更加清晰()。 – aziza