如何调用此 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中去,如何写?求代码

如何访问以前的状态,并使用它在单个状态设置器调用中仅更新某些对象属性?

带有 ArrayList<String> 的 Java 对象被序列化为单个字符串,而不是包含一个字符串的数组

如何从 ArrayList 中正确删除对象?

不确定如何仅使用kotlin在可打包对象Arraylist中检索某些变量