Java 从另一个类中的另一个方法将值放入Hashmap中
我正在尝试创建一个传奇联盟应用程序。我有一个我无法解决的问题。我已经声明了一个Hashmap和ArrayList。首先,我使用JSON从LeagueofLegend API解析中获取数据。然后我把数据放到Hashmap中。但是,当我尝试从另一个类中的另一个方法将数据放入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
在此处输入代码
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();
}
}
}