在Android Studio中实施API的问题

发布于 2025-02-06 04:13:57 字数 6983 浏览 3 评论 0原文

我需要帮助来实现API的列表视图, 我还需要一个列表来完成并进行获取方法。 这是针对教师的项目,我看不到互联网教程上的解决方案 这是信息查看的代码: 包com.example.myapplication;


import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.common.api.Api;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.HttpCookie;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.io.File;
import java.io.IOException;

import javax.net.ssl.HttpsURLConnection;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;

public class TopScorer extends AppCompatActivity {
    SearchView searchView;
    ListView listView;
    String teams[] = {};

    ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_top_scorer);
        searchView = findViewById(R.id.search);
        listView = findViewById(R.id.listview);

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            ArrayList<String> teamsInf = new ArrayList<>();

            @Override
            public boolean onQueryTextSubmit(String query) {
                API API = new API(query);
                try {
                    API.execute().get();
                    teamsInf = API.getTeamsInfo();
                    arrayAdapter = new ArrayAdapter<String>(TopScorer.this, android.R.layout.simple_list_item_1, teamsInf);
                    listView.setAdapter(arrayAdapter);
                } catch (ExecutionException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return true;

            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return true;
            }
        });
    }

    public class API extends AsyncTask {

        String teamName;
        ArrayList<String> teamsInfo;

        public API(String name) {
            this.teamsInfo = new ArrayList<>();
        }

        @Override
        protected Object doInBackground(Object[] objects) {
            OkHttpClient client = new OkHttpClient();

            Request request = new Request.Builder()
                    .url("https://heisenbug-premier-league-live-scores-v1.p.rapidapi.com/api/premierleague/team?name="+this.teamName)
                    .get()
                    .addHeader("X-RapidAPI-Key", "6ad8dfcfcbmshb4a45a22532e4a1p1efecajsnc2fb433de0da")
                    .addHeader("X-RapidAPI-Host", "heisenbug-premier-league-live-scores-v1.p.rapidapi.com")
                    .build();
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(@NonNull Call call, @NonNull IOException e) {
                    Toast.makeText(TopScorer.this, "Error", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
                    int index=1;
                    String myResult = response.body().string();
                    Gson gson = new Gson();
                    Data responseResult=gson.fromJson(myResult, Data.class);
                    for (lst l : responseResult.Data())
                    {
                        Log.d(TAG, "Liverpool: " + l.getTeam());
                        teamsInfo.add(String.valueOf(index) + ". " + l.getPlayed() + ": " + l.getWin());
                        teamsInfo.add("Draws : " + l.getDraw());
                        teamsInfo.add("Loss : " + l.getLoss());
                        teamsInfo.add("Goals Against : " + l.getGoalsAgainst());
                        teamsInfo.add("Goals For : " + l.getGoalsFor());
                        teamsInfo.add("Points : " + l.getPoints());
                        teamsInfo.add("");
                        index++;
                    }


                }
            });
            return null;
        }
        public ArrayList<String> getTeamsInfo()
        {
            return this.teamsInfo;
        }
    }
}

这是数据类代码:


import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

public class Data {
    private String team;
    private String played;
    private String win;
    private String draw;
    private String loss;
    private String goalsFor;
    private String goalsAgainst;
    private String points;


    public String getTeam() {
        return this.team;
    }

    public String getPlayed() {
        return this.played;
    }

    public String getWin() {
        return this.win;
    }

    public String getDraw() {
        return this.draw;
    }

    public String getLoss() {
        return this.loss;
    }

    public String getGoalsFor() {
        return this.goalsFor;
    }

    public String getGoalsAgainst() {
        return this.goalsAgainst;
    }

    public String getPoints() {
        return this.points;
    }

    public Data fromJson(JSONObject jsonObject) {
        Data team = new Data();
        try {
            team.team = jsonObject.getString("team");
            team.played = jsonObject.getString("played");
            team.win = jsonObject.getString("win");
            team.draw = jsonObject.getString("draw");
            team.loss = jsonObject.getString("loss");
            team.goalsFor = jsonObject.getString("goalsFor");
            team.goalsAgainst = jsonObject.getString("goalsAgainst");
            team.points = jsonObject.getString("points");
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
        return team;
    }
}

任何人都可以帮助我吗?

I need help to implement a list view from an API,
i need one more list to complete and make a get method.
This is for a project for faculty and i dont see solution on tutorials on internet
Here is code for information view :
package com.example.myapplication;


import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.common.api.Api;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.HttpCookie;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.io.File;
import java.io.IOException;

import javax.net.ssl.HttpsURLConnection;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;

public class TopScorer extends AppCompatActivity {
    SearchView searchView;
    ListView listView;
    String teams[] = {};

    ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_top_scorer);
        searchView = findViewById(R.id.search);
        listView = findViewById(R.id.listview);

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            ArrayList<String> teamsInf = new ArrayList<>();

            @Override
            public boolean onQueryTextSubmit(String query) {
                API API = new API(query);
                try {
                    API.execute().get();
                    teamsInf = API.getTeamsInfo();
                    arrayAdapter = new ArrayAdapter<String>(TopScorer.this, android.R.layout.simple_list_item_1, teamsInf);
                    listView.setAdapter(arrayAdapter);
                } catch (ExecutionException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return true;

            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return true;
            }
        });
    }

    public class API extends AsyncTask {

        String teamName;
        ArrayList<String> teamsInfo;

        public API(String name) {
            this.teamsInfo = new ArrayList<>();
        }

        @Override
        protected Object doInBackground(Object[] objects) {
            OkHttpClient client = new OkHttpClient();

            Request request = new Request.Builder()
                    .url("https://heisenbug-premier-league-live-scores-v1.p.rapidapi.com/api/premierleague/team?name="+this.teamName)
                    .get()
                    .addHeader("X-RapidAPI-Key", "6ad8dfcfcbmshb4a45a22532e4a1p1efecajsnc2fb433de0da")
                    .addHeader("X-RapidAPI-Host", "heisenbug-premier-league-live-scores-v1.p.rapidapi.com")
                    .build();
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(@NonNull Call call, @NonNull IOException e) {
                    Toast.makeText(TopScorer.this, "Error", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
                    int index=1;
                    String myResult = response.body().string();
                    Gson gson = new Gson();
                    Data responseResult=gson.fromJson(myResult, Data.class);
                    for (lst l : responseResult.Data())
                    {
                        Log.d(TAG, "Liverpool: " + l.getTeam());
                        teamsInfo.add(String.valueOf(index) + ". " + l.getPlayed() + ": " + l.getWin());
                        teamsInfo.add("Draws : " + l.getDraw());
                        teamsInfo.add("Loss : " + l.getLoss());
                        teamsInfo.add("Goals Against : " + l.getGoalsAgainst());
                        teamsInfo.add("Goals For : " + l.getGoalsFor());
                        teamsInfo.add("Points : " + l.getPoints());
                        teamsInfo.add("");
                        index++;
                    }


                }
            });
            return null;
        }
        public ArrayList<String> getTeamsInfo()
        {
            return this.teamsInfo;
        }
    }
}

and here is Data Class code:


import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

public class Data {
    private String team;
    private String played;
    private String win;
    private String draw;
    private String loss;
    private String goalsFor;
    private String goalsAgainst;
    private String points;


    public String getTeam() {
        return this.team;
    }

    public String getPlayed() {
        return this.played;
    }

    public String getWin() {
        return this.win;
    }

    public String getDraw() {
        return this.draw;
    }

    public String getLoss() {
        return this.loss;
    }

    public String getGoalsFor() {
        return this.goalsFor;
    }

    public String getGoalsAgainst() {
        return this.goalsAgainst;
    }

    public String getPoints() {
        return this.points;
    }

    public Data fromJson(JSONObject jsonObject) {
        Data team = new Data();
        try {
            team.team = jsonObject.getString("team");
            team.played = jsonObject.getString("played");
            team.win = jsonObject.getString("win");
            team.draw = jsonObject.getString("draw");
            team.loss = jsonObject.getString("loss");
            team.goalsFor = jsonObject.getString("goalsFor");
            team.goalsAgainst = jsonObject.getString("goalsAgainst");
            team.points = jsonObject.getString("points");
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
        return team;
    }
}

can anyone help me, i prefered to implement api respone with okhttp code

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文