嗨在下面的代码中,我有LocationManager
currentLong
和currentLat
,vars
。点击按钮,我将varLat1
和VarLong1
添加到arraylist坐标。我如何使用Log.d
获取数组的值。 marcCoordinates.size()
为我提供了正确的尺寸,marcCoordinates.get(s)
给了我gpsplotter.MainActivity$Coordinates@42204f70
帮助谢谢
public class MainActivity extends AppCompatActivity implements LocationListener {
public class Coordinates {
public final double latitudeX;
public final double longitudeY;
public Coordinates(double lat, double lon) {
latitudeX = lat;
longitudeY = lon;}}
...
ArrayList<Coordinates> marcCoordinates = new ArrayList<>();
...
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
varLat1 = (currentLat);
varLong1 = (currentLong);
marcCoordinates.add(new Coordinates(varLat1, varLong1));
...
int s = marcCoordinates.size();
Log.d("log2",""+ marcCoordinates.get(s) + "" + marcCoordinates.size());
答案 0 :(得分:1)
Coordinates
没有toString
方法,因此使用了Object
的默认值,这只是名称+内存地址。
如果您想要更好的表示,请覆盖toString
方法:
public class Coordinates {
...
@Override
public String toString() {
// return some string here.
}
}
答案 1 :(得分:0)
您需要覆盖班级toString()
中的Coordinates
方法...
将解决问题。
@Override
public String toString() {
return "Coordinates [latitude=" + latitude + ", longitud=" + longitud + "]";
}
答案 2 :(得分:0)
您必须覆盖您班级的toString()
方法。否则将调用Object.class的toString()
,它不知道您要公开哪些属性并将返回ClassName@HashCode
:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
要解决此问题,只需在您的班级中覆盖toString
:
public class Coordinates {
//...
@Override
public String toString() {
return "Coordinates [latitude=" + latitude + ", longitud=" + longitud + "]";
}
}