Android - 读取网站json并显示到Activity
1.首先写一段json , 上传到www.myjson.com
[
{
"CarId": 1,
"UserName": "Z0001"
},
{
"CarId": 2,
"UserName": "Z0002"
},
{
"CarId": 3,
"UserName": "Z0003"
}
]
得到一个有我们已经写好的json网站
2.完成了先前准备工作,现在打开Android studio
准备xml页面
2.在manifest中需要加入允许网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
3.编写获取JSON类,注意需要写在另一个线程中,如果在主线程中修改UI会导致程序崩溃
这里我们需要使用到的是异步进程 AsyncTask,参数都是无,就填Void就行了
AsyncTask 异步线程中有4个重要的方法需要被重写
onPreExecute()
onProgressUpdate()
onPostExecute()
*doInBackground() //在后台执行
整体思路:
1.保存url值
2.连接url
3.缓存读取到的内容
4.用数组分别取出缓存的内容
1 public class fetchdata extends AsyncTask<Void,Void,Void> { 2 String data = ""; 3 int Carid; 4 String Carnumber=null; 5 List<Integer> CarId_list = new ArrayList<>(); 6 List<String> CarNumber_list = new ArrayList<>(); 7 8 @Override 9 protected Void doInBackground(Void... voids) { 10 try { 11 12 URL url = new URL("https://api.myjson.com/bins/8beww"); 13 14 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 15 16 InputStream inputStream = urlConnection.getInputStream(); 17 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 18 19 String temp = ""; 20 while (temp != null){ 21 temp = bufferedReader.readLine(); 22 data = data + temp; 23 } 24 25 JSONArray jsonArray = new JSONArray(data); 26 for(int i=0;i<jsonArray.length();i++){ 27 JSONObject object = jsonArray.getJSONObject(i); 28 29 Carid = object.getInt("CarId"); 30 Carnumber = object.getString("UserName"); 31 32 CarId_list.add(Carid); 33 CarNumber_list.add(Carnumber); 34 } 35 36 } catch (MalformedURLException e) { 37 e.printStackTrace(); 38 } catch (IOException e) { 39 e.printStackTrace(); 40 } catch (JSONException e) { 41 e.printStackTrace(); 42 } 43 44 return null; 45 } 46 47 @Override 48 protected void onPostExecute(Void aVoid) { 49 super.onPostExecute(aVoid); 50 51 for(int i=0;i<CarNumber_list.size();i++){ 52 MainActivity.textView.append(CarId_list.get(i).toString()+" "+CarNumber_list.get(i)+"\n"); 53 54 } 55 }