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.用数组分别取出缓存的内容
public class fetchdata extends AsyncTask<Void,Void,Void> {
String data = "";
int Carid;
String Carnumber=null;
List<Integer> CarId_list = new ArrayList<>();
List<String> CarNumber_list = new ArrayList<>();
@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL("https://api.myjson.com/bins/8beww");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temp = "";
while (temp != null){
temp = bufferedReader.readLine();
data = data + temp;
}
JSONArray jsonArray = new JSONArray(data);
for(int i=0;i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
Carid = object.getInt("CarId");
Carnumber = object.getString("UserName");
CarId_list.add(Carid);
CarNumber_list.add(Carnumber);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
for(int i=0;i<CarNumber_list.size();i++){
MainActivity.textView.append(CarId_list.get(i).toString()+" "+CarNumber_list.get(i)+"\n");
}
}
原文:https://www.cnblogs.com/kevin162726/p/10733560.html