AsyncTask從網絡下載JSON并解析,在TextView中展示

1.自定義一個類實現(xiàn)系統(tǒng)AsyncTask

public class MyAsyncTask extends AsyncTask<String, Void, byte[]> {
    private List<Map<String,String>> toList = new ArrayList<Map<String,String>>();
    private Context context;
    private TextView textView;
    private ProgressDialog dialog;
    public MyAsyncTask(Context context,TextView textView){
        this.context = context;
        this.textView = textView;
        dialog = new ProgressDialog(context);
        dialog.setIcon(R.drawable.ic_launcher);
        dialog.setTitle("友情提示");
        dialog.setMessage("正在為您努力加載中");
    }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialog.show();
    }
    @Override
    protected byte[] doInBackground(String... params) {
        HttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(params[0]);
        try {
            HttpResponse httpResponse = httpClient.execute(httpGet);
            if(httpResponse.getStatusLine().getStatusCode() == 200){
                HttpEntity entity = httpResponse.getEntity();
                byte [] data = EntityUtils.toByteArray(entity);
                return data;
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    @Override
    protected void onPostExecute(byte[] result) {
        super.onPostExecute(result);
        if(result != null){
            //將下載下來的字節(jié)數(shù)組轉換為字符串
            String jsonString = new String(result);
            //
            toList = ParseBytetoJSON.parseNewtoList(jsonString);
            //在TextView 里面展示解析后JSON數(shù)據(jù)
            textView.setText(toList.toString());
        }
        else{
            Toast.makeText(context, "下載JSON數(shù)據(jù)失敗", Toast.LENGTH_LONG).show();
        }
        dialog.dismiss();
    }

}

2.解析JSON,返回list集合

/**
 * 解析JSON數(shù)據(jù)
 * @author Administrator
 *
 */
public class ParseBytetoJSON {
    private static List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    public static List<Map<String,String>> parseNewtoList(String jsonString){
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            if(jsonObject.getString("status").equals("ok")){
                JSONObject jsonObject_paramz = jsonObject.getJSONObject("paramz");
                JSONArray jsonArray_feeds = jsonObject_paramz.getJSONArray("feeds");
                for(int i=0 ;i<jsonArray_feeds.length();i++){
                    JSONObject jsonObject_feeds = jsonArray_feeds.getJSONObject(i);
                    JSONObject jsonObject_data = jsonObject_feeds.getJSONObject("data");
                    
                    Map<String ,String > map = new HashMap<String ,String>();
                    map.put("subject", jsonObject_data.getString("subject"));
                    map.put("summary", jsonObject_data.getString("summary"));
                    map.put("cover", jsonObject_data.getString("cover"));
                    map.put("changed", jsonObject_data.getString("changed"));
                    
                    list.add(map);
                }
            }
            
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return list;
    }
}

3.測試Activity

public class MainActivity extends Activity {
    private MyAsyncTask myAsyncTask;
    private TextView textView;
    private String url = "http://litchiapi.jstv.com/api/GetFeeds?column=0&PageSize=10&pageIndex=1";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textView = (TextView)findViewById(R.id.tv_textView);
        myAsyncTask = new MyAsyncTask(this, textView);
        myAsyncTask.execute(url);
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 介紹自己負責的部分,如何實現(xiàn)的。 自定義view viewGroup activity的啟動流程 事件傳遞及滑動沖...
    東經315度閱讀 1,346評論 1 4
  • 想法~表達(影響想法跟表達的原因:語言和詞匯,邏輯和結構,意愿和狀態(tài))~接受(溝通媒介、聆聽能力、聽者的狀態(tài)和意愿...
    黎帥閱讀 973評論 0 0
  • @一只不愛爬樹的考拉 我問舍友,過兩天就要考研了,很快就解放了,開心嗎? 不開心。一臉愁容 舍友是進大學就抱定信念...
    一只不愛爬樹的考拉閱讀 759評論 0 7

友情鏈接更多精彩內容