[英]How can i used Volley and Loader in a single android project?
在我的项目中,我首先使用AsyncTask从Internet加载listView中的数据。 之后,我使用Loader使用AsyncTaskLoader从Internet加载数据。 但是现在我发现,凌空是从互联网上获取数据的更好方法。 所以我的问题是如何使用Volley在装载程序中装载数据? 目前,我在加载器的帮助下在listView上显示数据,但是如果我不使用加载器来加载数据,那么使用Volley在listView中加载数据的替代方法是什么?
项目URL: https : //github.com/CSS08/InfiniteNews
您可以为此目的使用Volley StringRequest
然后使用QueryResolver
类中已有的代码解析响应JSON
。 请参阅下面的代码示例-这应该使您了解如何将Volley用于您的用途-您可以决定将代码放置在何处-我仅向您提供一些有关如何实现Volley库使用的提示。
try{
RequestQueue queue = Volley.newRequestQueue(context);
StringRequest newsDataRequest = new StringRequest(Request.Method.GET,url, new Listener<String>() {
@Override
public void onResponse(String newsDataJson) {
Log.i(TAG, "Got News Articles From Server:: "+newsDataJson);
//Now process the volley response using your QueryResolver code:
List <NewsData> newsData = QueryResolver.extractFromJson(newsDataJson);
//with the newsData - you can now update your adapter - I am using an example here
newsDataAdapter.clear();
// If there is a valid list of {@link NewsData}s, then add them to the adapter's
// data set. This will trigger the ListView to update.
if (newsData != null && !newsData.isEmpty()) {
newsDataAdapter.addAll(newsData);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//there was an error - you want to print it out here...
}
});
//add the request to queue
queue.add(newsDataRequest);
}
catch(Exception e){
//some issues here -
}
我希望这可以帮助你。 您可以在此处查看基本的Volley教程 。
取而代之的AsyncTaskLoader
,一个使用AsyncTask
在后台下载,您可以编写一个扩展类Loader<NewsData>
并在它的onForceLoad()
方法排队凌空请求,会做的实际负荷。 然后在Volley的onResponse
回调中将结果传递给Loader的deliverResult
方法。 这样,您将保留Loader的所有优势并提高网络性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.