Phụ lục "Thời tiết ở thành phố - Thời tiết Viewer" miễn phí sử dụng các dịch vụ Web REST phù OpenWeatherMap.org cho 16 ngày dự báo thời tiết cho một thành phố cụ thể. Các ứng dụng truy xuất dữ liệu ở định dạng JSON. Các kết quả được hiển thị trong một ListView - thành phần để hiển thị một danh sách hỗ trợ di chuyển. Trong ứng dụng này sử dụng một định dạng tùy chỉnh cho các mục:
- Biểu tượng thời tiết
- Ngày trong tuần với một mô tả văn bản của thời tiết ngày hôm đó,
- Các cao và nhiệt độ thấp nhất trong ngày (C) và
độ ẩm theo phần trăm.
Để truy cập vào các chuỗi URL của dịch vụ web đã được chuyển đổi thành một đối tượng URL.
Sau đó đối tượng URL được sử dụng để mở đối tượng HttpUrlConnection, dẫn đến một cuộc gọi đến một dịch vụ Web thông qua một yêu cầu HTTP.
Các ứng dụng đọc tất cả các dữ liệu từ lớp HttpUrlConnection dòng InputStream và đặt chúng trong một dòng, và sau đó chuyển đổi chuỗi trong JSONObject để xử lý.
Ứng dụng này cho thấy làm thế nào để tổ chức thực hiện các hoạt động mở rộng bên ngoài chủ đề giao diện và nhận được kết quả trong các chủ đề giao diện sử dụng đối tượng AsyncTask. Điều này đặc biệt quan trọng cho các cuộc gọi đến các dịch vụ web, thực hiện trong đó thời gian là không xác định. dữ liệu thời tiết được hiển thị trong một thành phần ListView, và các dữ liệu cho từng hạng mục ListView giao sử dụng lớp con ArrayAdapter.
Xem làm thế nào để cải thiện hiệu suất bằng cách sử dụng mô hình ListView View-Holder, trong đó các đại diện của các yếu tố hiện ListView sử dụng lại khi bạn thoát khỏi các yếu tố của màn hình.
Cuối cùng, chúng tôi sử dụng một số phương tiện vật liệu thiết kế của Hỗ trợ thiết kế Thư viện Thư viện Android - phần TextInputLayout lá EditText gợi ý trên màn hình ngay cả sau khi người dùng bắt đầu nhập văn bản;
nút nổi FloatingActionButton được sử dụng để gửi dữ liệu người dùng đầu vào; thành phần Snackbar hiển thị một thông báo cho người sử dụng.
# Dịch vụ Web REST-tuân thủ,
#AsyncTask,
#HttpUrlConnection,
dữ liệu # chế biến ở định dạng JSON, JSONObject, JSONArray,
#ListView, ArrayAdapter, mô hình xem Holder,
#TextInputLayout, FloatingActionButton