Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MovieFragment extends Fragment {
- public MovieFragment() {
- }
- // ArrayAdapter<String> movieAdapter;
- MovieAdapter movieAdapter;
- GridView gridView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //Add this line in order for this fragment to handle menu events.
- setHasOptionsMenu(true);
- }
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- // Inflate the menu; this adds items to the action bar if it is present.
- inflater.inflate(R.menu.moviefragment, menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
- //noinspection SimplifiableIfStatement
- if (id == R.id.action_refresh) {
- FetchMovieTask movieTask = new FetchMovieTask();
- movieTask.execute();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment_main, container, false);
- /* movieAdapter = new ArrayAdapter<String>(getActivity(),
- R.layout.gridview_item,
- R.id.item_imageView,
- new ArrayList<String>()); */
- movieAdapter = new MovieAdapter(getActivity());
- gridView = (GridView)rootView.findViewById(R.id.gridview);
- gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- Movie movie = movieAdapter.getItem(position);
- //Toast.makeText(getActivity(),movieCast,Toast.LENGTH_SHORT).show();
- Intent intent = new Intent(getActivity(),DetailActivity.class)
- .putExtra("Movie", movie);
- //.putExtra(Intent.)
- startActivity(intent);
- }
- });
- return rootView;
- }
- public class FetchMovieTask extends AsyncTask<Void, Void,List<String>>{
- private final String LOG_TAG = FetchMovieTask.class.getSimpleName();
- protected List<String> doInBackground(Void... params){
- HttpURLConnection urlConnection = null;
- BufferedReader reader = null;
- String movieJsonStr = null;
- try{
- String baseUrl = "http://api.themoviedb.org/3/discover/movie?sort_by=popularity.desc";
- String apiKey = "&api_key=" + BuildConfig.MOVIE_DB_ORG_API_KEY;
- URL url = new URL(baseUrl.concat(apiKey));
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setRequestMethod("GET");
- urlConnection.connect();
- InputStream inputStream = urlConnection.getInputStream();
- StringBuffer buffer = new StringBuffer();
- if(inputStream==null)
- return null;
- reader = new BufferedReader(new InputStreamReader(inputStream));
- String line;
- while((line = reader.readLine()) !=null) {
- buffer.append(line + "n");
- }
- if(buffer.length()==0)
- return null;
- movieJsonStr =buffer.toString();
- // Log.v(LOG_TAG , "Movie Json String: " + movieJsonStr);
- } catch (IOException e){
- Log.e(LOG_TAG, "Error ", e);
- return null;
- } finally {
- if (urlConnection != null)
- urlConnection.disconnect();
- if (reader != null) {
- try {
- reader.close();
- } catch (final IOException e) {
- Log.e(LOG_TAG, "Error closing stream", e);
- }
- }
- }
- try {
- return getMovieDataFromJson(movieJsonStr);
- }catch (JSONException e){
- Log.e(LOG_TAG,"JSON Error",e);
- }
- return null;
- }
- private List<String> getMovieDataFromJson(String jsonString) throws JSONException{
- JSONObject movieJSON = new JSONObject(jsonString);
- JSONArray movieArray = movieJSON.getJSONArray("results");
- ArrayList<Movie> movies = null;
- List<String> urls = new ArrayList<String>();
- // List<String> arr = new ArrayList<String>();
- for(int i=0; i<movieArray.length(); i++){
- JSONObject indexObject = movieArray.getJSONObject(i);
- Movie indexMovie = new Movie();
- indexMovie.setOverview(indexObject.getString("overview"));
- indexMovie.setReleaseDate(indexObject.getString("release_date"));
- indexMovie.setPosterPath(indexObject.getString("poster_path"));
- indexMovie.setVoteAverage(indexObject.getInt("vote_average"));
- // urls.add("http://image.tmdb.org/t/p/w185" + movie.getString("poster_path"));
- /* arr.add("http://image.tmdb.org/t/p/w185" + movie.getString("poster_path"));
- arr.add("http://image.tmdb.org/t/p/w185" + movie.getString("overview"));
- arr.add("http://image.tmdb.org/t/p/w185" + movie.getString("release_date"));
- arr.add("http://image.tmdb.org/t/p/w185" + movie.getDouble("vote_average"));*/
- //urls.add(arr);
- movies.add(indexMovie);
- // Log.v(LOG_TAG , "Movie Json String: " + indexMovie);
- urls.add("http://image.tmdb.org/t/p/w185" + indexMovie.getPosterPath());
- }
- for(String s: urls){
- Log.v(LOG_TAG, "Movie Entry : " + s);
- }
- return urls;
- }
- @Override
- protected void onPostExecute(List<String> strings) {
- movieAdapter.replace(strings);
- gridView.setAdapter(movieAdapter);
- //super.onPostExecute(s);
- }
- }
- private class MovieAdapter extends BaseAdapter{
- private final String LOG_TAG = MovieAdapter.class.getSimpleName();
- private Context context;
- ArrayList<Movie> movieList;
- private final List<String> urls = new ArrayList<String>();
- // private final List<String> urlsList = new ArrayList<String>();
- public MovieAdapter(Context context){
- this.context= context;
- // Collections.addAll(urls,posterPath);
- }
- @Override
- public int getCount() {
- return movieList.size();
- }
- @Override
- public Movie getItem(int position) {
- return movieList.get(position);
- }
- /* public String getBaseItem(int position){
- return urlsList.get(position);
- }*/
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if(convertView == null){
- convertView = new ImageView(context);
- }
- ImageView imageView = (ImageView) convertView;
- Movie movieDb = getItem(position);
- String url = "https://image.tmdb.org/t/p/w185" + movieDb.getPosterPath();
- // String url2 = getBaseItem(position);
- // Log.e(LOG_TAG, " URL " + url);
- Picasso.with(context).load(url).into(imageView);
- return convertView;
- }
- public void replace(List<String> urls){
- if(urls!=null){
- this.urls.clear();
- this.urls.addAll(urls);
- notifyDataSetChanged();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement