Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让API在Android中返回整数列表?_Java_Android_Api_Int - Fatal编程技术网

Java 如何让API在Android中返回整数列表?

Java 如何让API在Android中返回整数列表?,java,android,api,int,Java,Android,Api,Int,再一次,我对编码还不熟悉,我正试图为我的机器人团队编写一个Android应用程序。我已经走得很远了,但我一直在努力只返回一些球队的排名 这是我当前的onClick代码 public void onClick(final View v) { v.setEnabled(false); switch (v.getId()) { case R.id.btnGetRanks: try { TextView textHe

再一次,我对编码还不熟悉,我正试图为我的机器人团队编写一个Android应用程序。我已经走得很远了,但我一直在努力只返回一些球队的排名

这是我当前的onClick代码

public void onClick(final View v) {
    v.setEnabled(false);
    switch (v.getId()) {
        case R.id.btnGetRanks:
            try {
                TextView textHeyo = (TextView) getView().findViewById(R.id.textGetRanks);
                textHeyo.setText(new EventRanking().execute(tba).get().toString());
            } catch (  ExecutionException | InterruptedException e) {
                e.printStackTrace();
            }
            break;
       //... more code not related to issue ...
    }
    // ...
}
这是我的背景(正如我所说,我是新的)

更具体地说,这就是我想要得到的

    /**
     * Makes API requests with the subdirectory <code>/event/{eventKey}/rankings</code>
     *
     * @param eventKey TBA Event Key, e.g. <code>2016nytr</code>
     * @return A list of team rankings for the event
     * @throws IOException
     */
    public EventRankings getRankings(String eventKey) throws IOException {
        String directory = "/event/" + eventKey + "/rankings";
        return Deserializer.toEventRankings(tba.getDataTBA(directory).getJson());
    }
这就是你可以通过EventRankings获得的东西

    /**
     * The event rankings and tiebreaker information for an event
     */
    @Value
    public class EventRankings {

        /**
         * List of rankings at the event
         */
        public Ranking[] rankings;
        /**
         * List of year-specific values provided in the `sort_orders` array for each team.
         */
        public SortOrderInfo[] sort_order_info;

        /**
         * The Sort order of the rankings for a particular year
         */
        @Value
        public class SortOrderInfo {
            /**
             * Name of the field used in the <code>sort_order</code> array.
             */
            public String name;
            /**
             * Integer expressing the number of digits of precision in the number provided in sort_orders.
             */
            public int precision;

        }
这就是我要回来的,但我只想要球队号码和他们的排名


好的,当您使用
EventRankings getRankings(String eventKey)
并且想要一个包含团队编号和排名的对象时,您会得到一个对象
EventRankings

根据您共享的图像:

  • 事件排名
  • 拥有
    排名的集合
  • 排名
    具有
    int
    排名
  • Ranking
    还有一个字符串
    team\u key
    (我猜是“team number”
您可以通过以下几种方式实现:

1. 假设您希望将其作为某种类型的映射
map


2. 如果你知道排名是独一无二的,你也可以用另一种方式绘制地图:

Map<String, Int> rankedTeams = new HashMap<>();
for(Ranking ranking : eventsRankings.rankings) {
    rankedTeams.put(ranking.rank, ranking.teamKey);
}

3. 最后,如果您不想通过排名或名称轻松查找,可以创建一个新对象列表,可能是
List


摘自:


非常感谢,我可以问一下第一个和第二个问题吗,代码在哪里?就像我猜的是哪一部分。对不起!我对
ASyncTask
doInBackground
非常陌生,您可以将其更改为返回不同类型的对象(类型args
中的第三个参数将从
EventRankings
更改为您选择的任何参数。)我收到此错误:java.lang.NullPointerException:尝试在com.example.scouttingApp4.RankingsFragment.onClick上的空对象引用上调用虚拟方法“java.lang.String java.lang.Object.toString()(RankingsFragment.java:50)那么第50行是什么呢?看起来您的ASyncTask现在可能返回
null
。我回答了您的问题-您可能需要将此标记为已回答并打开question@Cail如果这回答了您的问题,请将其标记为已回答
    /**
     * The event rankings and tiebreaker information for an event
     */
    @Value
    public class EventRankings {

        /**
         * List of rankings at the event
         */
        public Ranking[] rankings;
        /**
         * List of year-specific values provided in the `sort_orders` array for each team.
         */
        public SortOrderInfo[] sort_order_info;

        /**
         * The Sort order of the rankings for a particular year
         */
        @Value
        public class SortOrderInfo {
            /**
             * Name of the field used in the <code>sort_order</code> array.
             */
            public String name;
            /**
             * Integer expressing the number of digits of precision in the number provided in sort_orders.
             */
            public int precision;

        }
EventRankings eventRankings = getRankings("eventKey");

Map<String, Int> teamsRanked = new HashMap<>();
for(Ranking ranking : eventsRankings.rankings) {
    teamsRanked.put(ranking.teamKey, ranking.rank);
}
for (Map.Entry<String, Int> entry : teamsRanked.entrySet()) {
    Log.d("TUT", entry.getKey() + ":" + entry.getValue());
}
Log.d("TUT", "frc1323 is ranked: " + teamsRanked.get("frc1323"));
Map<String, Int> rankedTeams = new HashMap<>();
for(Ranking ranking : eventsRankings.rankings) {
    rankedTeams.put(ranking.rank, ranking.teamKey);
}
Log.d("TUT", "Ranked #1 is: " + rankedTeams.get(1));
Log.d("TUT", "Ranked #2 is: " + rankedTeams.get(2));
Log.d("TUT", "Ranked #3 is: " + rankedTeams.get(3));
class Result {

   private final String teamName;
   private final int rank;

   public Result(String teamName, int rank) {
       this.teamName = teamName;
       this.rank = rank;
   }

   public String getTeamName() {
       return teamName;
   }

   public int getRank() {
       return rank;
   }
}

List<Result> results = new HashMap<>();
for(Ranking ranking : eventsRankings.rankings) {
    results.add(new Result(ranking.teamKey, ranking.rank));
}
for(Result result : results) {
    Log.d("TUT", result.getTeamName() + " : " + result.getRank());
}