I've to parse JSON data which I get from database. I can get them successfully but I want to get them using asynctask. But I'm new to this concept. Below is my code which has custom adapter as parsed data will be shown in listview.
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;
}
}