我必须解析从数据库中获取的 JSON 数据。我可以成功获取它们,但我想使用 asynctask 获取它们。但我对这个概念很陌生。下面是我的代码,它具有自定义适配器,因为解析的数据将显示在列表视图中。
public class Favourites extends ListActivity {
ProgressDialog pDialog;
ListView lv;
String data = "";
ArrayList<String> arr;
ArrayAdapter<String> adapter;
ArrayList<String> useridarr;
ArrayList<String> namearr;
ArrayList<String> store_namearr;
ArrayList<String> brand_namearr;
ArrayList<String> pricearr;
ArrayList<String> imagearr;
ArrayList<String> addressarr;
ArrayList<String> typearr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favourites);
useridarr = new ArrayList<String>();
namearr = new ArrayList<String>();
store_namearr = new ArrayList<String>();
brand_namearr = new ArrayList<String>();
pricearr = new ArrayList<String>();
imagearr = new ArrayList<String>();
addressarr = new ArrayList<String>();
typearr = new ArrayList<String>();
// getting data from db
final GetDataFromDB getdb = new GetDataFromDB();
new Thread(new Runnable() {
public void run() {
data = getdb.getDataFromDB("1");
System.out.println(data);
runOnUiThread(new Runnable() {
@Override
public void run() {
ArrayList<Users> users = parseJSON(data);
addData(users);
}
});
}
}).start();
}
public ArrayList<Users> parseJSON(String result) {
ArrayList<Users> users = new ArrayList<Users>();
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
Users user = new Users();
user.setUser_id(json_data.getString("user_id"));
user.setName(json_data.getString("name"));
user.setStore_name(json_data.getString("store_name"));
user.setBrand_name(json_data.getString("brand_name"));
user.setPrice(json_data.getString("price"));
user.setPic(json_data.getString("pic"));
user.setAddress(json_data.getString("address"));
user.setType(json_data.getString("type"));
users.add(user);
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return users;
}
@SuppressWarnings({ "rawtypes" })
public void addData(ArrayList<Users> users) {
arr = new ArrayList<String>();
for (Iterator i = users.iterator(); i.hasNext();) {
Users p = (Users) i.next();
useridarr.add(p.getUser_id());
namearr.add(p.getName());
store_namearr.add(p.getStore_name());
brand_namearr.add(p.getBrand_name());
pricearr.add(p.getPrice());
imagearr.add(p.getPic());
addressarr.add(p.getAddress());
typearr.add(p.getType());
}
adapter = new CustomListFavourites(Favourites.this, useridarr, namearr, store_namearr, brand_namearr, pricearr, imagearr, addressarr, typearr);
lv= getListView();
lv.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
}