我有一个应用程序,可以从谷歌服务获得定期的位置更新。这工作正常。 现在,我想将每个位置存储在一个位置向量中:
Vector vectorLocations = new Vector();
onLocationChanged我这样做是为了添加新位置:
@Override
public void onLocationChanged(Location location) {
mLastUpdateTime = DateFormat.getTimeInstance().format(new Date());
latitud.setText(String.valueOf(location.getLatitude()));
longitud.setText(String.valueOf(location.getLongitude()));
tiempo.setText(mLastUpdateTime);
velocidad.setText(String.valueOf(location.getSpeed()));
altura.setText(String.valueOf(location.getAltitude()));
vectorLocations.addElement(location);
ntextView.setText(String.valueOf(vectorLocations.lastIndexOf(location)));
}
但是现在我想得到例如位置3,所以我这样做:
Location positionthree = vectorLocations.elementAt(3);
但我得到错误不兼容的类型:
答案 0 :(得分:1)
如果错误是找到Object
而不是Location
,您可以将对象转换为如此位置:
Location positionthree = (Location) vectorLocations.elementAt(3);
或者更简单的方法是创建ArrayList
个Location
变量并访问它们。这是你可以做的事情:
ArrayList<Location> allLocations = new ArrayList<>();
// On location change
allLocations.add(location);
// When you want to access them
Location positionThree = allLocations.get(3);
希望它有所帮助!
答案 1 :(得分:0)
您需要将elementAt()
返回的对象转换为位置类型,如下所示
Location positionthree = (Location) vectorLocations.elementAt(3);
答案 2 :(得分:-1)
最好使用ArrayList。
声明:
ArrayList<Location> locations = new ArrayList<>();
添加元素:
locations.add(location);
要访问位置处的元素:
Location positionThree = locations.get(3);
但请记住,函数.get()中的索引3实际上是指位置4,因为索引从0开始。