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
| public class LoadProgTvData {
private Activity activity;
private static List<ProgTvObj> lst_prog = new ArrayList<ProgTvObj>();
private static ProgTvAdapter progTvAdapter = null;
private Hours progHours;
public static enum Hours { BEGINING_EVENING, END_EVENING };
public LoadProgTvData(Activity activity, Hours h) {
this.activity = activity;
this.progHours = h;
if(lst_prog.isEmpty())
new ListRefresher().execute();
else
refreshListView();
}
public void setActivity(Activity activity) {
this.activity = activity;
if(!lst_prog.isEmpty())
refreshListView();
}
/**
* Set List of ProgTvObj from an XML stream
*/
private void setListFromXml() {
// SAX Parser
try {
ProgSaxXml px = new ProgSaxXml(activity.getAssets().open("soir.xml")); // SAX Parser
lst_prog = px.getProgList();
} catch (MalformedURLException e) {
Log.d("MalformedURLException", "XML Url is malformed", e);
throw new RuntimeException(e);
} catch (IOException e) {
Log.d("IOException", e.toString());
}
}
/**
* Set Adapter of ListView to fill it with ProgTvObj
*/
public void refreshListView() {
//Hours progHours = (Hours) getIntent().getSerializableExtra("tabHours"); // Get Hours value or null if not defined
if(null != activity) {
if(null == progTvAdapter)
progTvAdapter = new ProgTvAdapter(activity);
if(null != progHours)
progTvAdapter.setListProg(myUtils.filter(lst_prog, progHours));
else
progTvAdapter.setListProg(lst_prog);
ListView lstview_prog = (ListView)activity.findViewById(R.id.lstview_prog);
lstview_prog.setAdapter(progTvAdapter);
lstview_prog.setOnItemClickListener(progTvAdapter);
}
}
class ListRefresher extends AsyncTask<Uri, Void, Void> {
private ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
if(!lst_prog.isEmpty()) {
this.cancel(true);
refreshListView();
}
else
progressDialog = ProgressDialog.show(activity, null, "Chargement en cours...");
}
@Override
protected Void doInBackground(Uri... params) {
setListFromXml();
return null;
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
refreshListView();
}
}
} |
Partager