Lỗi không đọc được json từ websever android năm 2024
Hế lô các bạn, Dự đây sẽ là phần cuối trong loạt bài . Chúng ta sẽ viết nốt code java xử lý và quan trọng nhất là lấy JSon mà chúng ta đã xuất ra từ các phần trước. Show Nội dung Update: 21/08/2015 – Tối ưu hóa code. Cấu trúc java của chúng ta gồm các file sau (Do số lượng file ít nên mình không có phân thành các package). Viết các class cấu hình, chuẩn bịNói nó hơi khó hiểu nhưng thật ra là thế này. Chúng ta cần một số hằng số để lưu một số giá trị nhất định và nó nằm trong class Var. Để thao tác dễ dàng với các đối tượng “người yêu cũ” thì chúng ta cần có một class Lover. Và để lấy JSon xuống thì chúng ta cần class LoadJson làm việc đó. Xây dựng các hằng sốpackage cachhoc.net.demojson; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.widget.Toast; public class Var { }
Không có gì là khó hiểu, trong class này mình chỉ lưu ý là chúng ta sử dụng SharedPreferences để lưu trữ nick và pass khi người dùng muốn ghi nhớ cho lần đăng nhập sau. Và nó cũng thường dùng để lưu các cài đặt (setting) cho các ứng dụng.Xây dựng class LoverLover của chúng ta sẽ có 5 trường chính là id, name, phone, begin date (ngày bắt đầu yêu) và end date (ngày chia tay). package cachhoc.net.demojson; import org.json.JSONException; import org.json.JSONObject; public class Lover { }
Các bạn chú ý thông thường các phương thức getter chúng ta không trả về giá trị gì và thường là public void… tuy nhiên mình viết chúng trả về chính đối tượng Lover (return this). Điều này giúp cho chúng ta thao tác dễ hơn. Ví dụ như khi các bạn muốn set 2 giá trị name và phone thì các bạn phải viết 2 lần là lover.setName và lover.setPhone như thế có thể làm máy chạy chậm hơn giống như khi bạn đi chợ, bạn mua rau rồi chạy về, rồi lại chạy ra mua đậu,… Còn mình chỉ cần lover.setName(…).setPhone(…) tức là đi chợ mua rau và mua luôn cả đậu. =))Phương thức toJSON mình viết để chuyển 1 đối tượng sang dạng JSon để dễ dàng cho các thao tác gửi dữ liệu lên server, tuy nhiên trong App này thì mình không dùng nó, viết để các bạn biết và có thể dùng cho các app khác thôi. Xây dựng class LoadJSonThực ra trong này không chỉ lấy JSon về mà còn gửi dữ liệu lên để xử lý nữa. Và như hôm trước khi xây dựng file lover.php mình có nói là chúng ta phân biệt các hành động thông qua biến method. package cachhoc.net.demojson; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; import org.apache.http.Header; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; public class LoadJson { }
Trong đó:
Đến đây nghe vẻ hơi dài dài rồi. Phần quan trọng nhất là lấy JSon đã ổn. Chúng ta tiếp tục xử lý 4 Activity. Xử lý các ActivityTương tự như phần giao diện, chúng ta sẽ đi làm lần lượt các bước: Cấu hình, Chuẩn bị -> Login -> Register -> List Old Lover -> Add Lover Và trong code mình cũng đặt tên các phương thức khá rõ ràng nên sẽ không cần giải thích nhiều. Activity LoginĐể login vào được thì chúng ta sẽ phải gửi nick và pass lên hệ thông kiểm tra, file lover.php sẽ kiểm tra và nếu đúng thì mới login vào được. package cachhoc.net.demojson; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; public class LoginActivity extends AppCompatActivity implements View.OnClickListener, LoadJson.OnFinishLoadJSonListener { } Activity RegisterNếu chưa có tài khoản, chúng ta cần phải đăng ký để hệ thông thêm vào database. package cachhoc.net.demojson; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.EditText; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; public class RegisterActivity extends AppCompatActivity implements View.OnClickListener, LoadJson.OnFinishLoadJSonListener { } Activity Add Loverpackage cachhoc.net.demojson; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import org.json.JSONException; import org.json.JSONObject; import java.util.Calendar; import java.util.HashMap; public class AddLoverActivity extends AppCompatActivity implements View.OnClickListener, LoadJson.OnFinishLoadJSonListener, DatePickerDialog.OnDateSetListener { } Activity Main – List LoverTrong này có 2 phần chúng ta cần xử lý là list và Adapter cho list. File MainActivity.java package cachhoc.net.demojson; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; public class MainActivity extends AppCompatActivity implements View.OnClickListener, LoadJson.OnFinishLoadJSonListener {
|