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
|
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
public class MuseeActivity extends ListActivity implements OnItemClickListener {
private static final String BASE_URL = "https://opendata.paris.fr/api/records/1.0/search/?dataset=liste-musees-de-france-a-paris&rows=50";
private final class DownloadMusee extends AsyncTask<String, Void, ArrayList<Musee>> {
private HttpURLConnection urlConnection;
private ProgressDialog progress;
public DownloadMusee() {
this.progress = new ProgressDialog(MuseeActivity.this);
}
@Override
protected void onPreExecute() {
progress.setTitle("Please wait");
progress.setMessage("Fetching remote data...");
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.show();
}
@Override
protected ArrayList<Musee> doInBackground(String... params) {
ArrayList<Musee> fetchedData = new ArrayList<Musee>();
String stream = null;
try {
URL url = new URL(params[0]);
this.urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(this.urlConnection.getInputStream());
BufferedReader r = new BufferedReader(new InputStreamReader(in, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
sb.append(line);
}
stream = sb.toString();
JSONArray concepts = new JSONObject(stream).getJSONArray("Musees");
for (int i = 0; i < concepts.length(); ++i) {
JSONObject record = concepts.getJSONObject(i);
fetchedData.add(new Musee(
record.getString("datasetid"),
record.getString("recordid"),
record.getString("fields"),
record.getString("periode_ouverture"),
record.getString("nom_du_musee"),
record.getString("adr"),
record.getString("ville"),
record.getString("nomreg"),
record.getString("ferme"),
record.getFloat("coordonnees_[]"), //erreur ici
record.getInt("cp"),
record.getString("nomdep"),
record.getString("type"),
record.getString("coordinates[]"),
record.getDate("record_timestamp") //erreur ici
));
}
} catch(Exception e) {
Log.e("genDROID","An error occured while fetching", e);
} finally {
this.urlConnection.disconnect();
}
return fetchedData;
}
@Override
protected void onPostExecute(ArrayList<Musee> result) {
if(progress.isShowing()) progress.dismiss();
MuseeActivity.this.populate(result);
}
}
private MuseeAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.adapter = new MuseeAdapter(this, android.R.layout.simple_list_item_1);
this.setListAdapter(adapter);
getListView().setOnItemClickListener(this);
}
@Override
protected void onStart() {
super.onStart();
new DownloadMusee().execute(BASE_URL);
}
public void populate(ArrayList<Musee> data) {
this.adapter.clear();
this.adapter.addAll(data);
this.adapter.notifyDataSetChanged();
}
@Override
public void onItemClick(AdapterView<?> parent, View arg1, int position, long id) {
/* Uncomment if needed
Fruit currentFruit = this.adapter.getItem(position);
Intent goToNextScreen = new Intent(this, Elsewhere.class);
goToNextScreen.putExtra("selected", currentFruit);
this.startActivity(goToNextScreen);
*/
Toast.makeText(this, "You selected item n° " + position, Toast.LENGTH_SHORT).show();
}
} |
Partager