【发布时间】:2016-11-21 19:35:23
【问题描述】:
我在这里遇到了一个奇怪的问题,我使用 volley 获得了 GET 响应并将数据加载到回收器视图;但是,除非我在应用程序运行时锁定和解锁手机一次,否则数据不会反映在视图中。然后我尝试将相同的响应本地存储到资产文件夹中,它的工作非常好。我对此没有任何线索,GET 响应显示在记录器中;我也对 Listview 进行了同样的尝试,但结果始终相同。请帮我解决这个问题......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newsFeed = engine();
rv = (RecyclerView) findViewById(R.id.newsItems);
rv.setHasFixedSize(true);
llm = new LinearLayoutManager(this);
rv.setLayoutManager(llm);
initializeAdapter(newsFeed);
}
private void initializeAdapter(ArrayList<newsItem> newsFeed) {
context = getApplicationContext();
NewsViewAdapter adapter = new NewsViewAdapter(context, newsFeed);
rv.setAdapter(adapter);
}
private ArrayList<newsItem> engine() {
//String res=loadJSONFromAsset();
RequestQueue queue = Volley.newRequestQueue(this);
final ArrayList<newsItem> reqs = new ArrayList<>();
JsonObjectRequest myReq = new JsonObjectRequest(Request.Method.GET,
"http://content.guardianapis.com/search?page=20&q=business%20OR%20sport&show-fields=thumbnail&api-key={mykey}",
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
// longInfo(response.toString());
JSONObject newsItems = response.getJSONObject("response");
JSONArray webNews = newsItems.getJSONArray("results");
int a = webNews.length();
for (int i = 0; i < a; i++) {
JSONObject temp = webNews.getJSONObject(i);
String title = temp.getString("webTitle");
Log.d("mytitile", title);
// String time = temp.getString("time");
String date = temp.getString("webPublicationDate");
String content = temp.getString("id");
Log.d("myContent", content);
String link = temp.getString("webUrl");
JSONObject temp_img = temp.getJSONObject("fields");
String image = temp_img.getString("thumbnail");
Log.d("imageUrl", image);
reqs.add(new newsItem(title, content, date, link, image));
}
} catch (JSONException e) {
Log.i("myTag", e.toString());
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("myTag", error.toString());
}
});
myReq.setRetryPolicy(new DefaultRetryPolicy(
10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
));
queue.add(myReq);
【问题讨论】:
标签: android android-volley android-recyclerview