1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
|
public class RestaurantList extends Activity{
// declare view objects
ImageButton imgNavBack, imgRefresh;
ListView listRestaurant;
ProgressBar prgLoading;
TextView txtAlert;
// declare adapter object to create custom restaurant list
RestaurantListAdapter rla;
// create arraylist variables to store data from server
static ArrayList<Long> Restaurant_ID = new ArrayList<Long>();
static ArrayList<String> Restaurant_nom = new ArrayList<String>();
static ArrayList<String> Restaurant_image = new ArrayList<String>();
String RestaurantAPI;
int IOConnect = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.restaurant_list);
// connect view objects and xml id
imgNavBack = (ImageButton) findViewById(R.id.imgNavBack);
prgLoading = (ProgressBar) findViewById(R.id.prgLoading);
listRestaurant = (ListView) findViewById(R.id.listRestaurant);
txtAlert = (TextView) findViewById(R.id.txtAlert);
imgRefresh = (ImageButton) findViewById(R.id.imgRefresh);
rla = new RestaurantListAdapter(RestaurantList.this);
// category API url
RestaurantAPI = Utils.RestaurantAPI+"?accesskey="+Utils.AccessKey;
// call asynctask class to request data from server
new getDataTask().execute();
// event listener to handle list when clicked
listRestaurant.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
// go to menu page
Intent iMenuList = new Intent(RestaurantList.this, MenuList.class);
iMenuList.putExtra("restaurant_id", Restaurant_ID.get(position));
iMenuList.putExtra("restaurant_name", Restaurant_nom.get(position));
startActivity(iMenuList);
}
});
// event listener to handle refresh button when clicked
imgRefresh.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
// re-request data from server by calling asynctask class
IOConnect = 0;
listRestaurant.invalidateViews();
clearData();
new getDataTask().execute();
}
});
// event listener to handle back button when clicked
imgNavBack.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
// go back to previous page
finish();
}
});
}
// clear arraylist variables before used
void clearData(){
Restaurant_ID.clear();
Restaurant_nom.clear();
Restaurant_image.clear();
}
// asynctask class to handle parsing json in background
public class getDataTask extends AsyncTask<Void, Void, Void>{
// show progressbar first
getDataTask(){
if(!prgLoading.isShown()){
prgLoading.setVisibility(0);
txtAlert.setVisibility(8);
}
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
// parse json data from server in background
parseJSONData();
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
// when finish parsing, hide progressbar
prgLoading.setVisibility(8);
// if internet connection and data available show data on list
// otherwise, show alert text
if((Restaurant_ID.size() > 0) && (IOConnect == 0)){
listRestaurant.setVisibility(0);
listRestaurant.setAdapter(rla);
}else{
txtAlert.setVisibility(0);
}
}
}
// method to parse json data from server
public void parseJSONData(){
clearData();
try {
// request data from Category API
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);
HttpConnectionParams.setSoTimeout(client.getParams(), 15000);
HttpUriRequest request = new HttpGet(RestaurantAPI);
HttpResponse response = client.execute(request);
InputStream atomInputStream = response.getEntity().getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(atomInputStream));
String line;
String str = "";
while ((line = in.readLine()) != null){
str += line;
}
// parse json data and store into arraylist variables
JSONObject json = new JSONObject(str);
JSONArray data = json.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject object = data.getJSONObject(i);
JSONObject restaurant = object.getJSONObject("Restaurant");
Restaurant_ID.add(Long.parseLong(restaurant.getString("Restaurant_ID")));
Restaurant_nom.add(restaurant.getString("Restaurant_nom"));
Restaurant_image.add(restaurant.getString("Restaurant_image"));
Log.d("Restaurant nom", Restaurant_nom.get(i));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
IOConnect = 1;
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
rla.imageLoader.clearCache();
listRestaurant.setAdapter(null);
super.onDestroy();
}
@Override
public void onConfigurationChanged(final Configuration newConfig)
{
// Ignore orientation change to keep activity from restarting
super.onConfigurationChanged(newConfig);
}
} |
Partager