Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 08: AsynTask, XML, JSON<br />
<br />
1 Load hình từ Internet<br />
hinh = (ImageView) findViewById(R.id.imageView);<br />
<br />
1.1<br />
<br />
Hàm load hình từ Internet<br />
<br />
private class LoadHinhTuInternet extends AsyncTask {<br />
@Override<br />
protected String doInBackground(String... params) {<br />
try {<br />
URL uri = new URL(params[0]);<br />
Bitmap bmp =<br />
BitmapFactory.decodeStream(uri.openConnection().getInputStream());<br />
hinh.setImageBitmap(bmp);<br />
} catch (MalformedURLException e) {<br />
e.printStackTrace();<br />
} catch (IOException e) {<br />
e.printStackTrace();<br />
}<br />
return null;<br />
}<br />
}<br />
<br />
1.2<br />
<br />
Gọi Thread trong OnCreate<br />
<br />
runOnUiThread(new Runnable() {<br />
@Override<br />
public void run() {<br />
new LoadHinhTuInternet()<br />
.execute("http://hcmup.edu.vn/images/stories/site_18/mainsite/daotao.pn<br />
g");<br />
}<br />
});<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
1<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 08: AsynTask, XML, JSON<br />
<br />
Chú ý cấp quyền truy cập ra Internet<br />
<br />
2 Đọc JSON<br />
Dữ liệu JSON chuẩn bị sẵn: http://etouchboard.com/EJSON.aspx<br />
<br />
Ngoài ra các bạn cũng có thể tạo ra file JSON dùng ngôn ngữ PHP/MySQL hoặc<br />
ASP.NET.<br />
Yêu cầu: Đọc dữ liệu JSON và trình bày ra ListView<br />
<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
2<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
2.1<br />
<br />
Thiết kế giao diện<br />
<br />
2.2<br />
<br />
Lab 08: AsynTask, XML, JSON<br />
<br />
Code xử lý<br />
<br />
@Override<br />
protected void onCreate(Bundle savedInstanceState) {<br />
super.onCreate(savedInstanceState);<br />
setContentView(R.layout.activity_main);<br />
//Lấy lại listview Chủng loại<br />
lv = (ListView)findViewById(R.id.lvChungLoai);<br />
runOnUiThread(new Runnable() {<br />
@Override<br />
public void run() {<br />
new docJSON()<br />
.execute("http://etouchboard.com/EJSON.aspx");<br />
}<br />
});<br />
}<br />
class docJSON extends AsyncTask {<br />
@Override<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
3<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 08: AsynTask, XML, JSON<br />
<br />
protected String doInBackground(String... params) {<br />
//Len mang doc tra ve cho bien s<br />
return docNoiDung_Tu_URL(params[0]);<br />
}<br />
@Override<br />
protected void onPostExecute(String s) {<br />
//Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();//hien thong bao bien s<br />
ArrayList arrChungLoai = new ArrayList();<br />
try {<br />
JSONArray mang = new JSONArray(s);<br />
for(int i = 0; i < mang.length(); i++)<br />
{<br />
JSONObject loai = mang.getJSONObject(i);<br />
arrChungLoai.add(<br />
loai.getString("MaLoai") + " : " +<br />
loai.getString("TenLoai"));<br />
}<br />
ArrayAdapter adapter = new ArrayAdapter(<br />
MainActivity.this,<br />
android.R.layout.simple_list_item_1,<br />
arrChungLoai<br />
);<br />
lv.setAdapter(adapter);<br />
} catch (JSONException e) {<br />
e.printStackTrace();<br />
}<br />
}<br />
}<br />
<br />
private static String docNoiDung_Tu_URL(String theUrl)<br />
{<br />
StringBuilder content = new StringBuilder();<br />
try<br />
{<br />
URL url = new URL(theUrl);<br />
URLConnection urlConnection = url.openConnection();<br />
BufferedReader bufferedReader = new BufferedReader(<br />
new InputStreamReader(urlConnection.getInputStream()));<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
4<br />
<br />
Ver 1.0 – 2016, FIT - HCMUP<br />
<br />
Lab 08: AsynTask, XML, JSON<br />
<br />
String line;<br />
while ((line = bufferedReader.readLine()) != null)<br />
{<br />
content.append(line + "\n");<br />
}<br />
bufferedReader.close();<br />
}<br />
catch(Exception e)<br />
{<br />
e.printStackTrace();<br />
}<br />
return content.toString();<br />
}<br />
<br />
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM<br />
<br />
5<br />
<br />