JSON và web API trong lập trình Android cơ bản

Khóa học lập trình Android cơ bản

5.0 (1 đánh giá)
Tạo bởi HowKteam Cập nhật lần cuối 5 năm trước 96.706 lượt xem 3 bình luận
Tác giả/Dịch giả: HowKteam
Học nhanh

Danh sách bài học

JSON và web API trong lập trình Android cơ bản

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về CƠ CHẾ XỬ LÝ BẤT ĐỒNG BỘ TRONG ANDROID và cách sử dụng AsyncTask để dễ dàng thao tác xử lý bất đồng bộ.

Tuy nhiên trong quá trình làm việc, các thao tác xử lý bất đồng bộ thường là các thao tác với mạng. Và mỗi lần phải sử dụng AsyncTask để làm như vậy thì quả là dài.

Bài hôm nay chúng ta sẽ sử dụng một thư viện hỗ trợ mạng cực mạnh, cũng như một bộ xử lý thông tin dạng JSON mà các Web API hay sử dụng rất phổ biến.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Cài đặt thư viện OkHttp và Moshi.
  • Sử dụng 2 thư viện trên để lấy dữ liệu đổ vào ứng dụng.

Tạo project mới

Như thường lệ, chúng ta sẽ tạo một project mới với tên là JSONExample

JSON và web API trong lập trình Android cơ bản

Và chọn minSdk là 13:

JSON và web API trong lập trình Android cơ bản


Cài đặt OkHttp và Moshi

Cài đặt thư viện OkHttp Moshi vào ứng dụng thật ra rất đơn giản. Do Android Studio đã tích hợp Gradle làm build system và chúng ta có thể lấy bất cứ thư viện nào lưu trên jCenter Maven Central (2 website chứa thư viện / dependencies cho Java lớn nhất hiện nay).

Bước 1: Mở file app/build.gradle . Các bạn nhìn ở cột trái sẽ thấy 2 file build.gradle, nhớ chọn cái (module: app) nhé:

JSON và web API trong lập trình Android cơ bản

Chúng ta thêm 2 dòng sau vào file build.gradle như thế này:

build.gradle

(Picasso là thư viện giúp hiển thị hình ảnh thuận tiện hơn, sẽ được sử dụng trong ví dụ).

Bước 2: Nhấn vào chữ Sync Now hoặc nút Sync như hình khoanh đỏ. Nhấn 1 lần thôi nhé, để Android Studio tự đồng bộ và download dependency về.

JSON và web API trong lập trình Android cơ bản


Nhắc lại về Model và JSON

Khi các bạn làm về Android tức là các bạn đã biết về Java cơ bản, mà đã là Java cơ bản thì chắc chắn không xa lạ gì khái niệm Model.

Model là một lớp mẫu cho đối tượng nào đó. Ví dụ model Person thì sẽ có 2 trường là String name và int age chẳng hạn.

Thứ 2 là về định dạng dữ liệu JSON. Ở đây chúng ta sẽ lấy dữ liệu từ trang này:

https://api.github.com/users

Đây là API public của Github, trả về một danh sách các người dùng Github. Và cái chúng ta muốn là đưa danh sách này hiển thị thành RecyclerView trong Android cho dễ xem.

Để cho đơn giản thì chúng ta chỉ lấy 3 trường trong json là login, id avatar_url.

Bước 1: Đầu tiên chúng ta tạo một file .java mới để làm model, lấy tên là User.java:

Đó, chỉ cần vậy thôi.

Bước 2: Tạo layout cho item của RecyclerView mà chúng ta muốn cho hiển thị:

Item_user.xml

Bước 3: Tạo Adapter cho RecyclerView. Để biết cách tạo, các bạn xem lại bài RECYCLERVIEW & VIEWHOLDER:

UserAdapter.java

Bước 4: Cuối cùng, chỉnh sửa lại file activity_main.xml, MainActivity.java và thêm permission INTERNET cho AndroidManifest:

activity_main.xml

MainActivity.java

Và trong AndroidManifest:

Và chúng ta sẽ được kết quả:

JSON và web API trong lập trình Android cơ bản


Vậy lợi ích ở đây là gì?

Về bản chất, việc sử dụng 2 thư viện OkHttp và Moshi không khác gì so với dùng AyncTask kèm JSONObject – 2 thư viện có sẵn của Android, nhưng…

  • Android không cho phép thao tác mạng trên UI Thread, do đó phải thực hiện theo kiểu bất đồng bộ. OkHttp hỗ trợ rất tốt việc này, mà code lại ngắn hơn do không phải viết class AsyncTask.
  • Moshi giúp chúng ta chuyển đổi thẳng từ tên các trường trong Model ra JSON.
  • Kết hợp cả 2 thư viện này với Picasso để hỗ trợ load ảnh, chúng ta đã viết được một chương trình con rất nhanh.

Kết luận

Qua bài này chúng ta đã nắm được cách sử dụng OkHttp theo kiểu bất đồng bộ thay cho AsyncTask, kết hợp với Moshi để xử lý dữ liệu JSON đổ vào danh sách trong Android.

Bài sau chúng ta sẽ tìm hiểu về PERMISSION TRONG ANDROID, vấn đề tưởng chừng nhỏ nhưng cũng có phần phức tạp.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học JSON và web API trong lập trình Android cơ bản dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Khóa học

Khóa học lập trình Android cơ bản

Serial tutorial hướng dẫn lập trình Android cơ bản

Đánh giá

binhpro220298 đã đánh giá 5 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
mr.son đã bình luận 5 năm trước

cho mình hỏi để in ra các chuyên mục từ categories từ trang này http://webservice.bidiworks.com/tinphatgiao.php thì mình cần thêm và thay đổi những gì mình đã làm thử tất cả đều bị RecyclerView: No adapter attached; skipping layout

khacduongcntt đã bình luận 7 năm trước

Lỗi này là lỗi gì vậy ad

 Process: com.example.m4800.tapbibuzz, PID: 974
 com.squareup.moshi.JsonDataException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at path $
 

Trúc đã bình luận 8 năm trước
Làm s để tạo được https://api.github.com/users vậy ad?
Không có video.