所以基本上我想做的是'从API获取团队的名称。然后基于团队的名称,我已经将团队的国家/地区标志的图片网址存储在了Firebase数据库中。因此,在从API获取团队名称之后,我试图从数据库中获取以下团队的网址。我面临的问题是“相同的网址(一线球队的网址)正在加载到所有团队的网址”。
标志的手动编码网址的JSON代码:
{"Country_images_url" : {
"india a" : {
"imageURL" : "url_1"},
"india b" : {
"imageURL" : "url_2" } } }
在此for()循环中,我从API检索团队的名称:
DatabaseReference database_country_images_url = FirebaseDatabase.getInstance().getReference("Country_images_url");
ArrayList<CricketScore> details = new ArrayList<CricketScore>;
for(int i=0, i< length; i++){
String team_1_name;
String team_2_name; // both this strings are filled with valued obtained from API
String team_1_url = url_of_team(team_1_name); // user-defined method
String team_2_url = url_of_team(team_2_name);
// And then I'm saving this data in an ArrayList
CricketScore live = new CricketScore(team_1_name, team_2_name, team_1_url, team_2_url);
details.add(live);
}
这是用户定义的方法:
public String url_of_team(String team){
DatabaseReference db_url = database_country_images_url.child(team.toLowerCase()).child("imageURL");
db_url.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
url = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return url;
}
}
代码工作正常,但是我得到的唯一prblm是在Arraylist中加载了相同的URL。 我不明白怎么了。请帮我解决这个问题。
答案 0 :(得分:0)
CricketScore live = new CricketScore();
使用setter方法在此处设置team_1_name,team_2_name的值。
public String url_of_team(String team){
DatabaseReference db_url = database_country_images_url.child(team.toLowerCase()).child("imageURL");
db_url.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
url = dataSnapshot.getValue(String.class);
//Set the data in object here - team_1_url, team_2_url
details.add(live);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return url;
}
}
尝试如上所示在onDataChange()内在arraylist中添加数据