Xem mẫu

Ver 1.0 – 2016, FIT - HCMUP

Lab 08: AsynTask, XML, JSON

1 Load hình từ Internet
hinh = (ImageView) findViewById(R.id.imageView);

1.1

Hàm load hình từ Internet

private class LoadHinhTuInternet extends AsyncTask {
@Override
protected String doInBackground(String... params) {
try {
URL uri = new URL(params[0]);
Bitmap bmp =
BitmapFactory.decodeStream(uri.openConnection().getInputStream());
hinh.setImageBitmap(bmp);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

1.2

Gọi Thread trong OnCreate

runOnUiThread(new Runnable() {
@Override
public void run() {
new LoadHinhTuInternet()
.execute("http://hcmup.edu.vn/images/stories/site_18/mainsite/daotao.pn
g");
}
});
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM

1

Ver 1.0 – 2016, FIT - HCMUP

Lab 08: AsynTask, XML, JSON

Chú ý cấp quyền truy cập ra Internet

2 Đọc JSON
Dữ liệu JSON chuẩn bị sẵn: http://etouchboard.com/EJSON.aspx

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
ASP.NET.
Yêu cầu: Đọc dữ liệu JSON và trình bày ra ListView

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM

2

Ver 1.0 – 2016, FIT - HCMUP

2.1

Thiết kế giao diện

2.2

Lab 08: AsynTask, XML, JSON

Code xử lý

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Lấy lại listview Chủng loại
lv = (ListView)findViewById(R.id.lvChungLoai);
runOnUiThread(new Runnable() {
@Override
public void run() {
new docJSON()
.execute("http://etouchboard.com/EJSON.aspx");
}
});
}
class docJSON extends AsyncTask {
@Override
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM

3

Ver 1.0 – 2016, FIT - HCMUP

Lab 08: AsynTask, XML, JSON

protected String doInBackground(String... params) {
//Len mang doc tra ve cho bien s
return docNoiDung_Tu_URL(params[0]);
}
@Override
protected void onPostExecute(String s) {
//Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();//hien thong bao bien s
ArrayList arrChungLoai = new ArrayList();
try {
JSONArray mang = new JSONArray(s);
for(int i = 0; i < mang.length(); i++)
{
JSONObject loai = mang.getJSONObject(i);
arrChungLoai.add(
loai.getString("MaLoai") + " : " +
loai.getString("TenLoai"));
}
ArrayAdapter adapter = new ArrayAdapter(
MainActivity.this,
android.R.layout.simple_list_item_1,
arrChungLoai
);
lv.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}

private static String docNoiDung_Tu_URL(String theUrl)
{
StringBuilder content = new StringBuilder();
try
{
URL url = new URL(theUrl);
URLConnection urlConnection = url.openConnection();
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(urlConnection.getInputStream()));
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM

4

Ver 1.0 – 2016, FIT - HCMUP

Lab 08: AsynTask, XML, JSON

String line;
while ((line = bufferedReader.readLine()) != null)
{
content.append(line + "\n");
}
bufferedReader.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return content.toString();
}

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM

5

nguon tai.lieu . vn