I am using this code to fetch some details from server from my android app. How can I improve it?
Here I am also transferring some data from one activity to another.
This is how I have written my Fetch_Details
class:
public class Fetch_Details extends Activity{
//JSON Node Names
private static final String TAG_RESULT = "result";
private static final String TAG_AID = "id";
private static final String TAG_PID = "id";
String sessionId;
String subject;
String college;
String stage;
String addressedto;
String address;
String city;
String state;
String aid;
String pid;
ArrayList<String> products = new ArrayList<String>();
ArrayList<String> productids = new ArrayList<String>();
ArrayList<String> quantities = new ArrayList<String>();
int count;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fetch_details);
Intent intent = getIntent();
sessionId = intent.getStringExtra("sessionId");
subject = intent.getStringExtra("subject");
college = intent.getStringExtra("college");
stage = intent.getStringExtra("stage");
addressedto = intent.getStringExtra("addressedto");
address = intent.getStringExtra("address");
products = intent.getStringArrayListExtra("products");
quantities = intent.getStringArrayListExtra("quantities");
System.out.println(products);
System.out.println(quantities);
// count = products.size();
System.out.println("Size of ArrayList:- "+count);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
new AsyncTask<Void, Void, Void>() {
private ProgressDialog dialog = new ProgressDialog(Fetch_Details.this);
@Override
protected void onPreExecute() {
dialog.setMessage("Fetching Details... Please wait...");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// Creating new JSON Parser
JSONParser jParser = new JSONParser();
// Getting JSON from ACCOUNT_URL (account=college)
String urlaccountid = null;
String accountquery = "Select id from Accounts Where accountname='"+college+"';";
try{
urlaccountid = "https://demo.vtiger.com/webservice.php?operation=query&sessionName="
+URLEncoder.encode(sessionId, "UTF-8")
+"&query="
+URLEncoder.encode(accountquery, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("URL_ACCOUNT:- "+urlaccountid);
JSONObject jsonaccount = jParser.getJSONFromUrl(urlaccountid);
try {
// Getting JSON Array
JSONArray json_result = jsonaccount.getJSONArray(TAG_RESULT);
System.out.println(json_result);
// Storing JSON item in a Variable
JSONObject resultid = json_result.getJSONObject(0);
// Pulling items from the array
aid = resultid.getString(TAG_AID);
} catch (JSONException e) {
e.printStackTrace();
}
//Show Response
System.out.println(aid);
// Getting JSON from PRODUCT_URL
String urlproductid = null;
for(int i=0;i<=count;i++)
{
String productquery = "select productname,id from Products where productname='"+products.get(i)+"';";
try{
urlproductid = "https://demo.vtiger.com/webservice.php?operation=query&sessionName="
+URLEncoder.encode(sessionId, "UTF-8")
+"&query="
+URLEncoder.encode(productquery, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("URL_PRODUCT:- "+urlproductid);
JSONObject jsonproduct = jParser.getJSONFromUrl(urlproductid);
try {
// Getting JSON Array
JSONArray json_result = jsonproduct.getJSONArray(TAG_RESULT);
System.out.println(json_result);
// Storing JSON item in a Variable
JSONObject resultid = json_result.getJSONObject(0);
// Pulling items from the array
pid = resultid.getString(TAG_PID);
} catch (JSONException e) {
e.printStackTrace();
}
//Show Response
System.out.println(pid);
productids.add(pid);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
dialog.dismiss();
}
}.execute();
}
public void fifthScreen(View view)
{
Intent intent = new Intent(Fetch_Details.this, Thank_You.class);
intent.putExtra("sessionId", sessionId);
intent.putExtra("subject", subject);
intent.putExtra("aid", aid);
intent.putExtra("stage", stage);
intent.putExtra("addressedto", addressedto);
intent.putExtra("address", address);
intent.putStringArrayListExtra("productids", productids);
intent.putStringArrayListExtra("quantities", quantities);
System.out.println(productids);
System.out.println(quantities);
startActivity(intent);
}
}