2017-08-22 4 views
0

サーバーからすべての国を読み込むメソッドがあります。サーバーの応答では、私はサーバー上の国のすべての名前を取得し、スピナーに移入する必要があります。残念ながら私はサーバーから国名を取得することができません。これは私のコード以下の通りです:このAndroidサーバーからデータを読み込んでSpinnerでデータを取り込みます

public void loadCountry() { 
mAPIService.loadCountry().enqueue(new Callback<Country>(){ 
    @Override 
    public void onResponse(Response<Country> response, Retrofit retrofit) { 
     String name = response.body().getName(); 
     Log.i("countryName", name); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddLocation.this, 
       android.R.layout.simple_spinner_item, response.body().getName().indexOf(1)); 
     countrySpinner.setAdapter(adapter); 
    } 

    @Override 
    public void onFailure(Throwable t) { 

    } 
}); 

}

以下の私のモデルクラスです: パブリッククラス国{

@SerializedName("id") 
@Expose 
private Integer id; 
@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("pager") 
@Expose 
private Pager pager; 

public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public Pager getPager() { 
    return pager; 
} 

public void setPager(Pager pager) { 
    this.pager = pager; 
} 

}

親切ソリューションで私を助けて。

+0

"残念ながら私はサーバーから国名を取得できません。"どうして?あなたのアプリはクラッシュしますか?何が問題ですか? –

+0

アプリケーションが破壊した名前をログに記録しようとするとjava.lang.NullPointerExceptionが発生する:printlnにメッセージが必要 –

+0

'response.body()。getName()'が 'null'を返すようです。 'response'と' response.body() 'の内容をデバッグして観察できますか? –

答えて

0

あなたはこれが私の質問を解決する答えは、この

//assuming response.body() is an array or list 
String[] names = new String[sizeOfYourArrayOrList]; 
int i = 0; 
for(YourObject o : response.body()){ 
    names[i] = o.getName(); //get the name of the country 
    i++; 
} 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddLocation.this, 
      android.R.layout.simple_spinner_item, names); 
    countrySpinner.setAdapter(adapter);  
+0

YourObjectのタイプに該当しないforeachエラーが発生する –

+0

あなたの解決策は私の質問にどのように答えるかを教えてくれました –

0

ような何かを試すことができ、カスタムアダプタ

または

を作成する必要があります。

String[] names = new String[response.body().getData().size()]; 
int i = 0; 
for(Datum o : response.body().getData()){ 
    names[i] = o.getName(); //get the name of the country 
    i++; 
} 
Log.i("country", name); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddLocation.this, 
android.R.layout.simple_spinner_item, names); 
countrySpinner.setAdapter(adapter); 
関連する問題