如何调用此 ArrayList 并取出单个对象?
Posted
技术标签:
【中文标题】如何调用此 ArrayList 并取出单个对象?【英文标题】:How do I call upon this ArrayList and get the individual objects out? 【发布时间】:2017-07-29 19:39:03 【问题描述】:如何从下面的 getTrails ArrayList 中取出单个对象?
public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener
private static Double myLatitude;
private static Double myLongitude;
以上是用户位置的声明。 下面是我要死的地方。
static class CycleTrails
static class Trails
Trails(double lat, double lon, String name)
this.lat = lat;
this.lon = lon;
this.name = name;
String name;
double lat;
double lon;
static double LAT_MAX = myLatitude + (0.0144927 * 20);
static double LAT_MIN = myLatitude - (0.0144927 * 20);
static double LON_MAX = myLongitude + (0.0181818 * 20);
static double LON_MIN = myLongitude - (0.0181818 * 20);
public static ArrayList<Trails> getTrails()
ArrayList<Trails> trailList = new ArrayList<>();
Trails t1 = new Trails(51.7181283, -3.3633637, "Bike Park Wales");
Trails t2 = new Trails(51.6666343, -3.3526367, "Mountain Ash");
Trails t3 = new Trails(50.5062244,-4.1777985, "FlyUp Downhill");
trailList.add(t1);
trailList.add(t2);
trailList.add(t3);
ArrayList<Trails> localTrails = new ArrayList<>();
for(Trails trail : trailList)
if (trail.lat > LAT_MIN && trail.lat < LAT_MAX && trail.lon < LON_MIN && trail.lon > LON_MAX)
localTrails.add(trail);
Log.d("Calc", "Run code");
return localTrails;
我以为我只需要使用 CycleTrails.getTrails() 后跟我想要的括号,但这不起作用。任何帮助都会很甜蜜
【问题讨论】:
LAT_MIN、LAT_MAX、LON_MIN 和 LON_MAX 的值是多少? 由于您使用了static
,此代码将失败。所有Trails
都将得到相同的值
【参考方案1】:
如何从 getTrails ArrayList 中取出单个对象 下面?
访问单个对象的一种方式:
for(Trails t : CycleTrails.getTrails())
//do something with t
// Example below:
Log.d("Name", t.name); // print name's to console screen
另一种访问单个对象的方法:
for(int i = 0 ; i < CycleTrails.getTrails().size(); i++)
CycleTrails temp = CycleTrails.getTrails().get(i);
// do something with temp
更新
您似乎在将结果显示到控制台屏幕时遇到了问题。我按照要求在下面实现了一些示例,希望这将为您提供继续进行的基础。
主要活动内部。
for(Trails t : CycleTrails.getTrails())
Log.d("Name", t.name); // print name's to console screen
Trails 类。
public class Trails
public String name;
public double lat; // Object fields
public double lon;
Trails(double lat, double lon, String name) // construcor
this.lat = lat;
this.lon = lon;
this.name = name;
CycleTrails 类
public class CycleTrails
static double LAT_MAX = myLatitude + (0.0144927 * 20);
static double LAT_MIN = myLatitude - (0.0144927 * 20);
static double LON_MAX = myLongitude + (0.0181818 * 20);
static double LON_MIN = myLongitude - (0.0181818 * 20);
public static ArrayList<Trails> getTrails()
ArrayList<Trails> trailList = new ArrayList<>();
Trails t1 = new Trails(51.7181283, -3.3633637, "Bike Park Wales");
Trails t2 = new Trails(51.6666343, -3.3526367, "Mountain Ash");
Trails t3 = new Trails(50.5062244,-4.1777985, "FlyUp Downhill");
trailList.add(t1);
trailList.add(t2);
trailList.add(t3);
ArrayList<Trails> localTrails = new ArrayList<>();
for(Trails trail : trailList)
if (trail.lat > LAT_MIN && trail.lat < LAT_MAX && trail.lon < LON_MIN && trail.lon > LON_MAX)
localTrails.add(trail);
Log.d("Calc", "Run code");
return localTrails;
注意
如果您对此不太了解,请点击HERE进一步说明,此数据将显示在控制台屏幕上。
【讨论】:
酷!所以如果我接受第一个建议,我想提取名称 String,我该怎么做? @RazerB12 我会更新我的答案给你看。如果对您有帮助,如果您将答案标记为已接受,我将不胜感激。 @RazerB12 如果对您有用,请随时通知我。我已经编辑了我的答案 谢谢!它不太工作,但我不确定我是否正确实施它......目前,我只想让它更新带有本地路径的文本视图,但它不起作用。我用相关代码交换了内部位,但似乎 Textview 根本没有更新本地跟踪。 @RazerB12 如果您需要任何帮助,请随时在 *** 上发布,我们随时为您提供帮助。祝你好运!。【参考方案2】:只需使用 CycleTrails.getTrails.get() 并将您想要获取的特定数组位置项放在括号中。
【讨论】:
从“CycleTrails”类中得到什么? 抱歉应该是 CycleTrails.getTrails.get(),基于提供的代码以上是关于如何调用此 ArrayList 并取出单个对象?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Web Forms – ArrayList 对象简介
c#里面arraylist中有792*5个数,我需要每5个数为一组取出,并且绑定到datagridview中去,如何写?求代码
如何访问以前的状态,并使用它在单个状态设置器调用中仅更新某些对象属性?