課程
/移動開發(fā)
/Android
/Android必學-異步加載
如何像老師那樣獲取一個網頁json數據?
2016-07-20
源自:Android必學-異步加載 2-3
正在回答
package?com.example.myapplication; import?android.os.AsyncTask; import?android.os.Bundle; import?android.support.v7.app.AppCompatActivity; import?android.util.Log; import?android.widget.ListView; import?org.json.JSONArray; import?org.json.JSONObject; import?java.io.BufferedReader; import?java.io.*; import?java.io.InputStream; import?java.io.InputStreamReader; import?java.net.*; import?java.util.ArrayList; import?java.util.List; public?class?MainActivity?extends?AppCompatActivity?{ ????private?static?final?String?TAG?=?"MainActivity"; private?ListView?listView; ????private?String?url?=?"http://idcbgp.cn/api/teacher?type=4&num=30"; ????private?List<NewsBean>?newsBeenList; ????@Override ????protected?void?onCreate(Bundle?savedInstanceState)?{ ????????super.onCreate(savedInstanceState); ????????setContentView(R.layout.activity_main); ????????listView?=?(ListView)?findViewById(R.id.listView); ????????MyAsyncTask?myAsyncTask?=?new?MyAsyncTask(); myAsyncTask.execute(url); ????} ????private?List<NewsBean>?getJsonData(String?s){ List<NewsBean>?listNews?=?new?ArrayList<>(); ????????NewsBean?newsBean; ????????try?{ ????????????String?jsonString?=readStream(new?URL(s).openStream()); ????????????Log.i(TAG,?"getJsonData:?"+jsonString); ????????????JSONObject?jsonObject?=?new?JSONObject(jsonString); ????????????JSONArray?jsonArray?=?jsonObject.getJSONArray("data"); ????????????for(int?i=0;i<jsonArray.length();i++){ ????????????????jsonObject?=?jsonArray.getJSONObject(i); ????????????????newsBean?=?new?NewsBean(); ????????????????newsBean.newsIconUrl=?jsonObject.getString("picSmall"); ????????????????newsBean.title?=?jsonObject.getString("name"); ????????????????newsBean.content?=?jsonObject.getString("description"); ????????????????listNews.add(newsBean); ????????????} ????????}?catch?(Exception?e)?{ ????????????e.printStackTrace(); ????????} ????????return?listNews; ????} ????public??String?readStream(InputStream?is){ ????????InputStreamReader?isr; ????????String?result=""; ????????try?{ ????????????String?temp=""; ????????????isr?=?new?InputStreamReader(is,"utf-8"); ????????????BufferedReader?bufferedInputStream?=?new?BufferedReader(isr); ????????????while((temp=bufferedInputStream.readLine())!=null){ result+=temp; ????????????} ????????}?catch?(IOException?e)?{ ????????????e.printStackTrace(); ????????} ????????return?result; ????} ????class?MyAsyncTask?extends?AsyncTask<String,Void,List<NewsBean>>{ ????????@Override ????????protected?List<NewsBean>?doInBackground(String...?strings)?{ ????????????return?getJsonData(strings[0]); ????????} ????????@Override ????????protected?void?onPostExecute(List<NewsBean>?newsBeen)?{ ????????????super.onPostExecute(newsBeen); ????????????newsBeenList?=?newsBeen; ????????????NewsAdapter?newsAdapter?=?new?NewsAdapter(newsBeenList,MainActivity.this); ????????????listView.setAdapter(newsAdapter); ????????} ????} }
舉報
了解Android中的異步加載處理方法,這是面試問的最多的知識點
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-07-20