Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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 从另一个类中的另一个方法将值放入Hashmap中_Java_Android_Hashmap - Fatal编程技术网

Java 从另一个类中的另一个方法将值放入Hashmap中

Java 从另一个类中的另一个方法将值放入Hashmap中,java,android,hashmap,Java,Android,Hashmap,我正在尝试创建一个传奇联盟应用程序。我有一个我无法解决的问题。我已经声明了一个Hashmap和ArrayList。首先,我使用JSON从LeagueofLegend API解析中获取数据。然后我把数据放到Hashmap中。但是,当我尝试从另一个类中的另一个方法将数据放入Hashmap时。它不起作用。 在此处输入代码if(response.issusccessful()){ JSONObject jsonObj=新的JSONObject(jsonData); JSONArray参与者=jsonOb

我正在尝试创建一个传奇联盟应用程序。我有一个我无法解决的问题。我已经声明了一个Hashmap和ArrayList。首先,我使用JSON从LeagueofLegend API解析中获取数据。然后我把数据放到Hashmap中。但是,当我尝试从另一个类中的另一个方法将数据放入Hashmap时。它不起作用。
在此处输入代码
if(response.issusccessful()){ JSONObject jsonObj=新的JSONObject(jsonData); JSONArray参与者=jsonObj.getJSONArray(“参与者”); MourteamCallerList=新阵列列表>(); menemyteamcallerlist=新数组列表>()

for(int i=0;i

公共类方法{
public void GetCallerinfoFromId(最终字符串SumName,最终HashMap参与者){
OkHttpClient=新的OkHttpClient();
Request Request=newrequest.Builder()
.url(“https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/“+SumName.replace(“,”)+“?api_key=7c75d244-fad7-4d18-8038-02a75287fce2”)
.build();
Call Call=client.newCall(请求);
call.enqueue(新回调(){
@凌驾
公共void onFailure(请求,IOE异常){
GetConfererinfoFromId(SumName,参与者);
}
@凌驾
public void onResponse(Response-Response)引发IOException{
试一试{
String jsonData=response.body().String();
JSONObject jsonObj=新的JSONObject(jsonData);
JSONObject game=jsonObj.getJSONObject(SumName.toLowerCase().replace(“,”);
字符串召唤级别=Long.toString(game.getLong(“召唤级别”);
参与者。put(“召集人级别”,召集人级别);
}
捕获(IOE异常){
}捕获(JSONException e){
e、 printStackTrace();
}
}
});
}
公共无效ChampionSquare(最终长championId,最终HashMap参与者){
if(championId==1){
参与者.put(“championId”,R.drawable.annie);
}
else if(championId==2){
参与者.put(“championId”,R.drawable.olaf);
}
else if(championId==3){
参与者.put(“championId”,R.drawable.galio);
}
else if(championId==4){
参与者.put(“championId”,R.drawable.twistedfate);
}
else if(championId==5){
参与者.put(“championId”,R.drawable.xinzhao);
}

当我打印Hashmap时,它会打印出CallerName、championId和CallerId的部分正确的键和值。我认为我所做的错误是将键和值放在内部类Hashmap中:

  • {courderName=whoiam2,championId=2130837580,courderId=20647588} {courderName=StillHere4U,championId=2130837617, 召唤ID=43639591}{召唤名称=StillThere4U, championId=2130837564,courderid=47639078}{courdername=Kairu 仁古,championId=2130837584,召唤ID=22276202} {courderName=halmooncircle,championId=2130837573, 召唤ID=312020000}{召唤名称=NineWorlds,championId=2130837576, 召唤者ID=31544164}{召唤者名称=Masterzeus92, championId=2130837672,召唤ID=34979540} {courdername=feeeesh,championId=2130837577, 召唤ID=27273581}{召唤名称=savedolphins, championId=2130837664,courderid=40901971}{courdername=Lucky Th1rt33n,championId=2130837660,召唤ID=34587805}

这是:

new Callback() {


    @Override
    public void onFailure(Request request, IOException e) {
        getSummonerInfoFromId(SumName,participant);
    }

    @Override
    public void onResponse(Response response) throws IOException {


        try {
            String jsonData = response.body().string();



                JSONObject jsonObj = new JSONObject(jsonData);
                JSONObject game = jsonObj.getJSONObject(SumName.toLowerCase().replace(" ",""));

                String summonerLevel = Long.toString(game.getLong("summonerLevel"));


                participant.put("summonerLevel",summonerLevel);


        }
        catch (IOException e) {

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}
不设置“召唤级别”键。它创建一个
回调
,调用onResponse方法时,该回调设置“召唤级别”键。然后将该
回调
传递给
调用.enqueue

根据名称,我假设
call.enqueue
不会立即发出请求,因此不会立即调用
onResponse
,因此不会立即设置“召唤级别”键

稍后,调用将完成,您的回调的
onResponse
方法将被调用,并且您将设置“召唤级别”键-但是
public class Methods {
public void getSummonerInfoFromId(final String SumName, final HashMap<String, Object> participant) {

    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
            .url("https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/"+SumName.replace(" ","")+"?api_key=7c75d244-fad7-4d18-8038-02a75287fce2")
            .build();

    Call call = client.newCall(request);
    call.enqueue(new Callback() {


        @Override
        public void onFailure(Request request, IOException e) {
            getSummonerInfoFromId(SumName,participant);
        }

        @Override
        public void onResponse(Response response) throws IOException {


            try {
                String jsonData = response.body().string();



                    JSONObject jsonObj = new JSONObject(jsonData);
                    JSONObject game = jsonObj.getJSONObject(SumName.toLowerCase().replace(" ",""));

                    String summonerLevel = Long.toString(game.getLong("summonerLevel"));


                    participant.put("summonerLevel",summonerLevel);


            }
            catch (IOException e) {

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    });

}
        public void ChampionSquare(final long championId, final HashMap<String, Object> participant) {
    if(championId==1){
        participant.put("championId", R.drawable.annie);
    }
    else if(championId==2){
        participant.put("championId",R.drawable.olaf);
    }
    else if(championId==3){
        participant.put("championId",R.drawable.galio);
    }
    else if(championId==4){
        participant.put("championId",R.drawable.twistedfate);
    }
    else if(championId==5){
        participant.put("championId", R.drawable.xinzhao);
    }
new Callback() {


    @Override
    public void onFailure(Request request, IOException e) {
        getSummonerInfoFromId(SumName,participant);
    }

    @Override
    public void onResponse(Response response) throws IOException {


        try {
            String jsonData = response.body().string();



                JSONObject jsonObj = new JSONObject(jsonData);
                JSONObject game = jsonObj.getJSONObject(SumName.toLowerCase().replace(" ",""));

                String summonerLevel = Long.toString(game.getLong("summonerLevel"));


                participant.put("summonerLevel",summonerLevel);


        }
        catch (IOException e) {

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}