Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.38 KB | None | 0 0
  1. public class MovieFragment extends Fragment {
  2.  
  3. public MovieFragment() {
  4. }
  5. // ArrayAdapter<String> movieAdapter;
  6. MovieAdapter movieAdapter;
  7. GridView gridView;
  8.  
  9.  
  10.  
  11. @Override
  12. public void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. //Add this line in order for this fragment to handle menu events.
  15. setHasOptionsMenu(true);
  16. }
  17.  
  18. @Override
  19. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  20. // Inflate the menu; this adds items to the action bar if it is present.
  21. inflater.inflate(R.menu.moviefragment, menu);
  22. }
  23.  
  24. @Override
  25. public boolean onOptionsItemSelected(MenuItem item) {
  26. // Handle action bar item clicks here. The action bar will
  27. // automatically handle clicks on the Home/Up button, so long
  28. // as you specify a parent activity in AndroidManifest.xml.
  29. int id = item.getItemId();
  30.  
  31. //noinspection SimplifiableIfStatement
  32. if (id == R.id.action_refresh) {
  33. FetchMovieTask movieTask = new FetchMovieTask();
  34. movieTask.execute();
  35. return true;
  36. }
  37.  
  38. return super.onOptionsItemSelected(item);
  39. }
  40.  
  41.  
  42. @Override
  43. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  44. Bundle savedInstanceState) {
  45. View rootView = inflater.inflate(R.layout.fragment_main, container, false);
  46.  
  47. /* movieAdapter = new ArrayAdapter<String>(getActivity(),
  48. R.layout.gridview_item,
  49. R.id.item_imageView,
  50. new ArrayList<String>()); */
  51. movieAdapter = new MovieAdapter(getActivity());
  52. gridView = (GridView)rootView.findViewById(R.id.gridview);
  53.  
  54.  
  55.  
  56. gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  57. @Override
  58. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  59. Movie movie = movieAdapter.getItem(position);
  60. //Toast.makeText(getActivity(),movieCast,Toast.LENGTH_SHORT).show();
  61. Intent intent = new Intent(getActivity(),DetailActivity.class)
  62. .putExtra("Movie", movie);
  63. //.putExtra(Intent.)
  64.  
  65. startActivity(intent);
  66. }
  67. });
  68. return rootView;
  69. }
  70.  
  71. public class FetchMovieTask extends AsyncTask<Void, Void,List<String>>{
  72.  
  73. private final String LOG_TAG = FetchMovieTask.class.getSimpleName();
  74.  
  75. protected List<String> doInBackground(Void... params){
  76.  
  77. HttpURLConnection urlConnection = null;
  78. BufferedReader reader = null;
  79.  
  80. String movieJsonStr = null;
  81.  
  82. try{
  83.  
  84. String baseUrl = "http://api.themoviedb.org/3/discover/movie?sort_by=popularity.desc";
  85. String apiKey = "&api_key=" + BuildConfig.MOVIE_DB_ORG_API_KEY;
  86. URL url = new URL(baseUrl.concat(apiKey));
  87.  
  88. urlConnection = (HttpURLConnection) url.openConnection();
  89. urlConnection.setRequestMethod("GET");
  90. urlConnection.connect();
  91.  
  92. InputStream inputStream = urlConnection.getInputStream();
  93. StringBuffer buffer = new StringBuffer();
  94. if(inputStream==null)
  95. return null;
  96.  
  97. reader = new BufferedReader(new InputStreamReader(inputStream));
  98.  
  99. String line;
  100. while((line = reader.readLine()) !=null) {
  101. buffer.append(line + "n");
  102. }
  103.  
  104. if(buffer.length()==0)
  105. return null;
  106.  
  107. movieJsonStr =buffer.toString();
  108.  
  109. // Log.v(LOG_TAG , "Movie Json String: " + movieJsonStr);
  110.  
  111. } catch (IOException e){
  112. Log.e(LOG_TAG, "Error ", e);
  113. return null;
  114. } finally {
  115. if (urlConnection != null)
  116. urlConnection.disconnect();
  117. if (reader != null) {
  118. try {
  119. reader.close();
  120. } catch (final IOException e) {
  121. Log.e(LOG_TAG, "Error closing stream", e);
  122. }
  123. }
  124.  
  125. }
  126.  
  127. try {
  128. return getMovieDataFromJson(movieJsonStr);
  129. }catch (JSONException e){
  130. Log.e(LOG_TAG,"JSON Error",e);
  131. }
  132. return null;
  133. }
  134.  
  135. private List<String> getMovieDataFromJson(String jsonString) throws JSONException{
  136. JSONObject movieJSON = new JSONObject(jsonString);
  137. JSONArray movieArray = movieJSON.getJSONArray("results");
  138. ArrayList<Movie> movies = null;
  139.  
  140. List<String> urls = new ArrayList<String>();
  141.  
  142. // List<String> arr = new ArrayList<String>();
  143. for(int i=0; i<movieArray.length(); i++){
  144. JSONObject indexObject = movieArray.getJSONObject(i);
  145. Movie indexMovie = new Movie();
  146. indexMovie.setOverview(indexObject.getString("overview"));
  147. indexMovie.setReleaseDate(indexObject.getString("release_date"));
  148. indexMovie.setPosterPath(indexObject.getString("poster_path"));
  149. indexMovie.setVoteAverage(indexObject.getInt("vote_average"));
  150.  
  151. // urls.add("http://image.tmdb.org/t/p/w185" + movie.getString("poster_path"));
  152.  
  153. /* arr.add("http://image.tmdb.org/t/p/w185" + movie.getString("poster_path"));
  154. arr.add("http://image.tmdb.org/t/p/w185" + movie.getString("overview"));
  155. arr.add("http://image.tmdb.org/t/p/w185" + movie.getString("release_date"));
  156. arr.add("http://image.tmdb.org/t/p/w185" + movie.getDouble("vote_average"));*/
  157.  
  158. //urls.add(arr);
  159. movies.add(indexMovie);
  160. // Log.v(LOG_TAG , "Movie Json String: " + indexMovie);
  161. urls.add("http://image.tmdb.org/t/p/w185" + indexMovie.getPosterPath());
  162.  
  163. }
  164. for(String s: urls){
  165. Log.v(LOG_TAG, "Movie Entry : " + s);
  166. }
  167. return urls;
  168. }
  169.  
  170. @Override
  171. protected void onPostExecute(List<String> strings) {
  172. movieAdapter.replace(strings);
  173. gridView.setAdapter(movieAdapter);
  174. //super.onPostExecute(s);
  175.  
  176.  
  177. }
  178. }
  179.  
  180. private class MovieAdapter extends BaseAdapter{
  181. private final String LOG_TAG = MovieAdapter.class.getSimpleName();
  182. private Context context;
  183. ArrayList<Movie> movieList;
  184. private final List<String> urls = new ArrayList<String>();
  185. // private final List<String> urlsList = new ArrayList<String>();
  186.  
  187. public MovieAdapter(Context context){
  188. this.context= context;
  189. // Collections.addAll(urls,posterPath);
  190. }
  191.  
  192. @Override
  193. public int getCount() {
  194. return movieList.size();
  195. }
  196.  
  197. @Override
  198. public Movie getItem(int position) {
  199. return movieList.get(position);
  200. }
  201.  
  202. /* public String getBaseItem(int position){
  203. return urlsList.get(position);
  204. }*/
  205.  
  206. @Override
  207. public long getItemId(int position) {
  208. return position;
  209. }
  210.  
  211. @Override
  212. public View getView(int position, View convertView, ViewGroup parent) {
  213. if(convertView == null){
  214. convertView = new ImageView(context);
  215. }
  216. ImageView imageView = (ImageView) convertView;
  217.  
  218. Movie movieDb = getItem(position);
  219. String url = "https://image.tmdb.org/t/p/w185" + movieDb.getPosterPath();
  220.  
  221. // String url2 = getBaseItem(position);
  222.  
  223. // Log.e(LOG_TAG, " URL " + url);
  224.  
  225. Picasso.with(context).load(url).into(imageView);
  226.  
  227. return convertView;
  228. }
  229.  
  230. public void replace(List<String> urls){
  231. if(urls!=null){
  232. this.urls.clear();
  233. this.urls.addAll(urls);
  234. notifyDataSetChanged();
  235. }
  236. }
  237. }
  238.  
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement