Я пытаюсь создать Лигу легенд APP. У меня есть проблема, которую я не могу решить. Я объявил Hashmap и ArrayList. Сначала я получаю данные из парсинга API League of Legend с использованием JSON. Затем я передаю данные в Hashmap. Однако когда я пытаюсь передать данные в Hashmap из другого метода в другом классе. Это не работает. enter code here
if (response.isSuccessful()) { JSONObject jsonObj = новый JSONObject (jsonData); Участники JSONArray = jsonObj.getJSONArray («участники»); mourTeamSummonerList = new ArrayList>(); menemyTeamSummonerList = new ArrayList>();положить значение внутри Hashmap из другого метода внутри другого класса
for(int i = 0; i< participants.length();i++){
JSONObject p = participants.getJSONObject(i);
long teamId = p.getLong("teamId");
HashMap<String, Object> participant = new HashMap<String, Object>();
if(teamId == 100){
long championId = p.getLong("championId");
String summonerName = p.getString("summonerName");
long summonerId = p.getLong("summonerId");
if(summonerName==IDName){
ifOurTeam = true;
}
participant.put("summonerName",summonerName);
methods.ChampionSquare(championId, participant);
participant.put("summonerId",summonerId);
methods.getSummonerInfoFromId(summonerName,participant);
System.out.println(participant);
mourTeamSummonerList.add(participant);
}
if(teamId == 200){
long championId = p.getLong("championId");
String summonerName = p.getString("summonerName");
long summonerId = p.getLong("summonerId");
participant.put("summonerName",summonerName);
methods.ChampionSquare(championId, participant);
participant.put("summonerId",summonerId);
methods.getSummonerInfoFromId(summonerName,participant);
System.out.println(participant);
menemyTeamSummonerList.add(participant);
}
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);
}
Когда я распечатать HashMap, он печатает частично правильные ключи и значения для summonerName, championId и summonerId. Я считаю, что то, что я сделал неправильно ставит ключ и значение внутри InnerClass Hashmap:
- {summonerName = whoiam2, championId = 2130837580, summonerId = 20647588} {summonerName = StillHere4U, championId = 2130837617, summonerId = 43639591} {summonerName = StillThere4U, championId = 2130837564, summonerId = 47639078} {summonerName = Kairu Rengu, championId = 2130837584, summonerId = 22276202} {summonerName = halmooncircle, championId = 2130837573, summonerId = 31202000} {summonerName = NineWorlds , championId = 2130837576, summonerId = 31544164} {summonerName = Masterzeus92, championId = 2 130837672, summonerId = 34979540} {summonerName = Feeeeeeeeeeeeesh, championId = 2130837577, summonerId = 27273581} {summonerName = savedolphins, championId = 2130837664, summonerId = 40901971} {summonerName = Лаки Th1rt33n, championId = 2130837660, summonerId = 34587805}
В чем вопрос? – immibis
Когда я распечатываю Hashmap, он печатает частично правильные ключи и значения для summonerName, championId и summonerId.Отсутствует ключ summonerLevel, потому что я кладу ключ внутри внутреннего класса? и как это исправить? –
Что неверно в идентификаторах? – immibis