package com.mobidev.listviewphpmysqlexample;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
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.Response;
import com.android.volley.ServerError;
import com.android.volley.TimeoutError;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.Request.Method;;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Created by lawrence on 4/19/15.
*/
public class UniversitiesActivity extends ActionBarActivity {
private ListView lvUniversities;
// private String universitiesUrl = "http://10.0.2.2/php_tizzi/php_list_db_example/universities.php";
private String universitiesUrl = "http://testing.mlab-training.devs.mobi/php_list_db_example/universities.php";
private String tag_json_obj = "request_unis_list";// Tag used to cancel the request
private CustomListAdapter adapter;
private ArrayList<UniversitiesModel> unisList = new ArrayList<UniversitiesModel>();;
private ProgressDialog mProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_universities);
lvUniversities = (ListView) findViewById(R.id.lvUniversities);
// lvUniversities.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//// Intent intent_more_details = new Intent(getApplicationContext(), MoreDetailsActivity.class);
//// intent_more_details.putExtra(MoreDetailsActivity.UNIVERSITY_ID, unisList.get(position).getId());
//// startActivity(intent_more_details);
// Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
//
// }
//
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
//
// }
// });
lvUniversities.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent_more_details = new Intent(getApplicationContext(), MoreDetailsActivity.class);
intent_more_details.putExtra(MoreDetailsActivity.UNIVERSITY_ID, unisList.get(position).getId());
startActivity(intent_more_details);
}
});
// JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(postsUrl, new Response.Listener<JSONArray>() {
// @Override
// public void onResponse(JSONArray response) {
// System.out.println(response);
// }
// }, new Response.ErrorListener() {
// @Override
// public void onErrorResponse(VolleyError error) {
//
// }
// }) {
// @Override
// public Map<String, String> getHeaders() throws AuthFailureError {
// Map<String, String> params = new HashMap<String, String>();
// params.put("Accept", "application/json");
// return params;
// }
// };
showProgress();
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, universitiesUrl, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response.length() > 0) {//checking if response is null
try {
JSONArray unisArray = response.getJSONArray("universities");
System.err.println(unisArray);
for (int i = 0; i < unisArray.length(); i++) {
JSONObject unisItem = unisArray.getJSONObject(i);
int id = unisItem.getInt("id");
String university_name = unisItem.getString("university_name");
String description = unisItem.getString("description");
UniversitiesModel universitiesModel = new UniversitiesModel(id, university_name, unisItem.getString("description"), null, null, null, null, null);
unisList.add(universitiesModel);
addToAdapter();
}
} 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 addToAdapter() {
adapter = new CustomListAdapter(getApplicationContext(), unisList);
adapter.notifyDataSetChanged();
lvUniversities.setAdapter(adapter);
}
private void showProgress() {
mProgress = ProgressDialog.show(UniversitiesActivity.this, "Please Wait",
"Accessing server...");
}
private void stopProgress() {
mProgress.cancel();
}
}