package com.bdc.ociney.fragment; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.bdc.ociney.R; import com.bdc.ociney.activity.MovieActivity; import com.bdc.ociney.adapter.ObjectAdapter; import com.bdc.ociney.fragment.core.BetterFragment; import com.bdc.ociney.modele.Movie.Movie; import com.bdc.ociney.modele.Theater.Theater; import com.bdc.ociney.modele.Theater.TheaterShowtime; import com.bdc.ociney.service.Service; import com.bdc.ociney.view.CellMovie; import java.util.ArrayList; import java.util.Date; import java.util.List; public class TheaterFragment extends BetterFragment implements AdapterView.OnItemClickListener { public static final String THEATER = "THEATER"; Theater theater; ObjectAdapter<Movie> adapter; AdapterView list; List<Movie> movies = new ArrayList<Movie>(); boolean erreurReseau = false; public static TheaterFragment newInstance(Theater theater) { Gson gSon = new Gson(); return newInstance(gSon.toJson(theater)); } public static TheaterFragment newInstance(String theaterJson) { TheaterFragment fragment = new TheaterFragment(); Bundle args = new Bundle(); args.putString(THEATER, theaterJson); fragment.setArguments(args); return fragment; } public Theater getTheater() { return theater; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_cinema, container, false); setFragmentView(view); Bundle bundle = getArguments(); if (bundle != null) { if (bundle.containsKey(THEATER)) { Gson gSon = new Gson(); theater = gSon.fromJson(bundle.getString(THEATER), new TypeToken<Theater>() { }.getType()); charger(); remplir(); ajouterListeners(); new LoadTheaterTask().execute(theater.getCode()); } } return view; } @Override protected void charger() { list = (AdapterView) findViewById(R.id.list); } @Override protected void remplir() { adapter = new ObjectAdapter<Movie>(getActivity(), movies, R.layout.cell_movie, CellMovie.class); list.setAdapter(adapter); adapter.notifyDataSetChanged(); } @Override protected void ajouterListeners() { list.setOnItemClickListener(this); } public void onClick(View v) { } @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Movie movie = (Movie) adapter.getItem(i); Intent intent = new Intent(getActivity(), MovieActivity.class); intent.putExtra(MovieFragment.MOVIE, (new Gson()).toJson(movie)); getActivity().startActivity(intent); getActivity().overridePendingTransition(0, 0); } //------------------------------------------------------------------ public void refreshAdapter(List<Movie> movies) { this.movies.clear(); this.movies.addAll(movies); adapter.notifyDataSetChanged(); } class LoadTheaterTask extends AsyncTask<Object, Void, List<Movie>> { @Override protected List<Movie> doInBackground(Object... data) { String code = (String) data[0]; try { List<TheaterShowtime> showtimes = Service.showtimelistForTheater(code, new Date(), 10, 1); return TheaterShowtime.getMovies(showtimes, theater); } catch (Service.NetworkException e) { erreurReseau = true; return null; } } @Override protected void onPostExecute(List<Movie> movies) { super.onPostExecute(movies); if (erreurReseau) onErreurReseau(); else { TheaterFragment.this.movies.addAll(movies); adapter.notifyDataSetChanged(); } } } }