| 12
 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