在我的应用程序中,我想从多个URL中获取数据并将json response
绑定到相应的类,例如Gallery Url
响应将与Gallery class
绑定。
我可以拨打单URL
和Class
,但我想用不同的网址和班级名称拨打10次电话。我怎样才能做到这一点?
这是我的代码:
String url="http://icetea09.com/blog-files/demo_json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvResult = (TextView) findViewById(R.id.tvResult);
VolleyHelper.getInstance(getApplicationContext()).addToRequestQueue(gsonRequest);
}
final GsonRequest gsonRequest = new GsonRequest(url, Gallery.class, null, new Response.Listener<Gallery>() {
@Override
public void onResponse(Gallery gallery) {
String textResult = "";
for (int i = 0; i < gallery.matches.size(); i++) {
Match Item = gallery.matches.get(i);
textResult += "URL: " + Item.url + "\n";
}
tvResult.setText(textResult);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
if (volleyError != null) {
Log.e("MainActivity", "" + volleyError.getMessage());
}
}
});
请建议我如何在for循环中进行此调用?
谢谢。
答案 0 :(得分:0)
这是一种方法:
private List<String> urls;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addUrls();
doRequests();
tvResult = (TextView) findViewById(R.id.tvResult);
VolleyHelper.getInstance(getApplicationContext()).addToRequestQueue(gsonRequest);
}
private void addUrls() {
urls = new ArrayList<String> ();
// add your urls here
urls.add("http://icetea09.com/blog-files/demo_json");
}
private void doRequests() {
for (String url : urls) {
GsonRequest gsonRequest = new GsonRequest(url, Gallery.class, null, new Response.Listener<Gallery>() {
@Override
public void onResponse(Gallery gallery) {
String textResult = "";
for (int i = 0; i < gallery.matches.size(); i++) {
Match Item = gallery.matches.get(i);
textResult += "URL: " + Item.url + "\n";
}
tvResult.setText(textResult);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
if (volleyError != null) {
Log.e("MainActivity", "" + volleyError.getMessage());
}
}
});
}
}
随意根据需要对其进行优化,因为我对Gson不是很熟悉,并且每次迭代初始化一个新的GsonRequest对象不适合大量网址。
这个代码的想法是将你的GsonRequest封装在for循环中。所有的url都在ArrayList中给出(在 addUrls()方法中添加它们!),并为数组中的每个元素执行一个新的请求。
要使用多个类执行此循环,您应该创建一个超类,并从中继承所有类,并在循环中调用此超类。