package com.mobidev.listviewphpmysqlexample;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkError;
import com.android.volley.NoConnectionError;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.ServerError;
import com.android.volley.TimeoutError;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
/**
* Created by lawrence on 4/20/15.
*/
public class MoreDetailsActivity extends ActionBarActivity {
public static final String UNIVERSITY_ID = "university_id";
private Bundle extras;
private String requestUrl = "http://testing.mlab-training.devs.mobi/php_list_db_example/universityinfo.php";
private ProgressDialog mProgress;
private String tag_json_obj = "request_single_uni_details";// Tag used to cancel the request
private int universityId;
private TextView txtUniName, txtUniAdd, txtUniDesc, txtLat, txtLng;
private Button btnCall, btnViewMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.more_details_activity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
extras = getIntent().getExtras();
if (extras != null) {
universityId = extras.getInt(UNIVERSITY_ID);
}
txtUniName = (TextView) findViewById(R.id.university_name);
txtUniAdd = (TextView) findViewById(R.id.university_address);
txtUniDesc = (TextView) findViewById(R.id.university_desc);
txtLat = (TextView) findViewById(R.id.lat);
txtLng = (TextView) findViewById(R.id.lng);
btnViewMap = (Button) findViewById(R.id.btnViewMap);
btnViewMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent map_intent = new Intent(getApplicationContext(), MapActivity.class);
map_intent.putExtra(MapActivity.ARG_UNIVERSITY_NAME, txtUniName.getText().toString().trim());
map_intent.putExtra(MapActivity.ARG_LATITUDE, Double.parseDouble(txtLat.getText().toString().trim()));
map_intent.putExtra(MapActivity.ARG_LONGITUDE, Double.parseDouble(txtLng.getText().toString().trim()));
startActivity(map_intent);
}
});
btnCall = (Button) findViewById(R.id.btnCallUs);
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_enquiry = new Intent(getApplicationContext(), EnquiriesActivity.class);
startActivity(intent_enquiry);
}
});
fetchDetails();
}
private void fetchDetails() {
showProgress();
Uri.Builder builder = Uri.parse(requestUrl).buildUpon();
builder.appendQueryParameter("university_id", Integer.toString(universityId));
// http://testing.mlab-training.devs.mobi/php_list_db_example/universityinfo.php?university_id=2
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, builder.toString(), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
txtUniName.setText(response.getString("university_name"));
txtUniAdd.setText(response.getString("address"));
txtUniDesc.setText(response.getString("description"));
txtLat.setText(response.getString("latitude"));
txtLng.setText(response.getString("longitude"));
} catch (JSONException e) {
e.printStackTrace();
}
stopProgress();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error instanceof NetworkError) {
try {
Toast.makeText(getApplicationContext(),
"Network Error. Try Again Later",
Toast.LENGTH_SHORT).show();
} catch (NullPointerException npe) {
System.err.println(npe);
}
} else if (error instanceof ServerError) {
try {
Toast.makeText(
getApplicationContext(),
"Problem Connecting to Server. Try Again Later",
Toast.LENGTH_SHORT).show();
} catch (NullPointerException npe) {
System.err.println(npe);
}
} else if (error instanceof AuthFailureError) {
} else if (error instanceof ParseError) {
} else if (error instanceof NoConnectionError) {
try {
Toast.makeText(getApplicationContext(),
"No Connection", Toast.LENGTH_SHORT).show();
} catch (NullPointerException npe) {
System.err.println(npe);
}
} else if (error instanceof TimeoutError) {
try {
Toast.makeText(
getApplicationContext().getApplicationContext(),
"Timeout Error. Try Again Later",
Toast.LENGTH_SHORT).show();
} catch (NullPointerException npe) {
System.err.println(npe);
}
}
stopProgress();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Accept", "application/json");
return params;
}
};
// Adding request to request queue
VolleySingleton.getInstance().addToRequestQueue(jsonObjReq,
tag_json_obj);
}
private void showProgress() {
mProgress = ProgressDialog.show(MoreDetailsActivity.this, "Please Wait",
"Accessing server...");
}
private void stopProgress() {
mProgress.cancel();
}
}