Advertisement
III-sonic

Untitled

Nov 20th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.90 KB | None | 0 0
  1. package com.skmobile.catalogmovie;
  2.  
  3. import android.app.LoaderManager;
  4. import android.content.Loader;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.text.TextUtils;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.ListView;
  12.  
  13. import java.util.ArrayList;
  14.  
  15. public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<ArrayList<MovieItems>>{
  16.  
  17. ListView listView;
  18. MovieThread thread;
  19. EditText editTitle;
  20. Button btnCari;
  21.  
  22. static final String EXTRAS_TITLE = "EXTRAS_TITLE";
  23.  
  24. @Override
  25. protected void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.activity_main);
  28. this.setTitle(" Catalogue Movie");
  29.  
  30. getSupportActionBar().setDisplayShowHomeEnabled(true);
  31. getSupportActionBar().setLogo(R.drawable.ic_movie_black_24dp);
  32. getSupportActionBar().setDisplayUseLogoEnabled(true);
  33.  
  34. thread = new MovieThread(this);
  35. thread.notifyDataSetChanged();
  36. listView = (ListView)findViewById(R.id.list_view);
  37.  
  38. listView.setAdapter(thread);
  39.  
  40. editTitle = (EditText)findViewById(R.id.edt_search);
  41. btnCari = (Button)findViewById(R.id.btn_search);
  42.  
  43. btnCari.setOnClickListener(myListener);
  44.  
  45. String title = editTitle.getText().toString();
  46. Bundle bundle = new Bundle();
  47. bundle.putString(EXTRAS_TITLE, title);
  48.  
  49. getLoaderManager().initLoader(0, bundle, this);
  50.  
  51. }
  52.  
  53. @Override
  54. public Loader<ArrayList<MovieItems>> onCreateLoader(int id, Bundle args) {
  55.  
  56. String kumpulanTitle = "";
  57. if (args != null ){
  58. kumpulanTitle = args.getString(EXTRAS_TITLE);
  59. }
  60.  
  61. return new MyTaskMovie(this , kumpulanTitle);
  62. }
  63.  
  64. @Override
  65. public void onLoadFinished(Loader<ArrayList<MovieItems>> loader, ArrayList<MovieItems> data) {
  66. thread.setData(data);
  67.  
  68. }
  69.  
  70. @Override
  71. public void onLoaderReset(Loader<ArrayList<MovieItems>> loader) {
  72. thread.setData(null);
  73.  
  74. }
  75.  
  76. View.OnClickListener myListener = new View.OnClickListener() {
  77. @Override
  78. public void onClick(View v) {
  79. String title = editTitle.getText().toString();
  80.  
  81. if (TextUtils.isEmpty(title))return;
  82.  
  83. Bundle bundle = new Bundle();
  84. bundle.putString(EXTRAS_TITLE, title);
  85. getLoaderManager().restartLoader(0, bundle, MainActivity.this);
  86. }
  87. };
  88. }
  89. ==================================
  90. package com.skmobile.catalogmovie;
  91.  
  92. import android.icu.text.DateFormat;
  93. import android.icu.text.SimpleDateFormat;
  94. import android.os.Build;
  95. import android.support.annotation.RequiresApi;
  96.  
  97. import org.json.JSONException;
  98. import org.json.JSONObject;
  99.  
  100. import java.util.Date;
  101.  
  102. /**
  103. * Created by ADMIN on 19/11/2017.
  104. */
  105.  
  106. public class MovieItems {
  107.  
  108. private String Title;
  109. private String image;
  110. private String discripsi;
  111. private String date;
  112. private int id;
  113. private String backdor;
  114.  
  115.  
  116. @RequiresApi(api = Build.VERSION_CODES.N)
  117. public MovieItems(JSONObject object) {
  118. try {
  119.  
  120. int id = object.getInt("id");
  121. String title = object.getString("original_title");
  122. String image = object.getString("poster_path");
  123. String description = object.getString("overview");
  124. String date = object.getString("release_date");
  125. String backdor = object.getString("backdrop_path");
  126.  
  127.  
  128. this.Title = title;
  129. this.backdor = backdor;
  130. this.id = id;
  131. this.discripsi = description;
  132. this.image = image;
  133. this.date = date;
  134.  
  135.  
  136.  
  137. } catch (JSONException e) {
  138. e.printStackTrace();
  139. }
  140. }
  141.  
  142. public String getTitle() {
  143. return Title;
  144. }
  145.  
  146. public void setTitle(String title) {
  147. Title = title;
  148. }
  149. public String getImage() {
  150. return image;
  151. }
  152.  
  153. public void setImage(String image) {
  154. this.image = image;
  155. }
  156.  
  157. public String getDiscripsi() {
  158. return discripsi;
  159. }
  160.  
  161. public void setDiscripsi(String discripsi) {
  162. this.discripsi = discripsi;
  163. }
  164.  
  165. public String getDate() {
  166. return date;
  167. }
  168.  
  169. public void setDate(String date) {
  170. this.date = date;
  171. }
  172.  
  173. public int getId() {
  174. return id;
  175. }
  176.  
  177. public void setId(int id) {
  178. this.id = id;
  179. }
  180.  
  181. public String getBackdor() {
  182. return backdor;
  183. }
  184.  
  185. public void setBackdor(String backdor) {
  186. this.backdor = backdor;
  187. }
  188.  
  189. }
  190.  
  191. =============================================
  192. package com.skmobile.catalogmovie;
  193.  
  194. import android.content.Context;
  195. import android.content.Intent;
  196. import android.icu.text.SimpleDateFormat;
  197. import android.os.Build;
  198. import android.support.annotation.RequiresApi;
  199. import android.icu.text.DateFormat;
  200. import android.view.LayoutInflater;
  201. import android.view.View;
  202. import android.view.ViewGroup;
  203. import android.widget.BaseAdapter;
  204. import android.widget.ImageView;
  205. import android.widget.RelativeLayout;
  206. import android.widget.TextView;
  207.  
  208. import com.bumptech.glide.Glide;
  209.  
  210. import java.text.ParseException;
  211. import java.util.ArrayList;
  212. import java.util.Date;
  213.  
  214. import de.hdodenhof.circleimageview.CircleImageView;
  215.  
  216. /**
  217. * Created by ADMIN on 19/11/2017.
  218. */
  219.  
  220. public class MovieThread extends BaseAdapter {
  221.  
  222. private ArrayList<MovieItems> mDataMovie = new ArrayList<>();
  223. private LayoutInflater mInflater;
  224. private Context context;
  225. private final String RELEASE_DATE = "releaseDate";
  226.  
  227. public MovieThread (Context context){
  228. this.context = context;
  229. mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  230.  
  231. }
  232.  
  233. public void setData(ArrayList<MovieItems> items) {
  234. mDataMovie = items;
  235. notifyDataSetChanged();
  236. }
  237. public void addItem(final MovieItems item){
  238. mDataMovie.add(item);
  239. notifyDataSetChanged();
  240. }
  241. public void clearData(){
  242.  
  243. mDataMovie.clear();
  244. }
  245.  
  246. @Override
  247. public int getItemViewType(int position) {
  248. return 0;
  249. }
  250. @Override
  251. public int getViewTypeCount() {
  252. return 1;
  253. }
  254.  
  255. @Override
  256. public int getCount() {
  257. return mDataMovie.size();
  258. }
  259.  
  260. @Override
  261. public MovieItems getItem(int position) {
  262. return mDataMovie.get(position);
  263. }
  264.  
  265. @Override
  266. public long getItemId(int position) {
  267. return position;
  268. }
  269.  
  270. @RequiresApi(api = Build.VERSION_CODES.N)
  271. @Override
  272. public View getView(int position, View convertView, ViewGroup parent) {
  273. ViewHolder holder = null;
  274. if (convertView == null) {
  275. holder = new ViewHolder();
  276. convertView = mInflater.inflate(R.layout.movie_list, null);
  277. holder.textViewTitle = (TextView)convertView.findViewById(R.id.tv_item_title);
  278. holder.textViewDescription = (TextView)convertView.findViewById(R.id.tv_item_discripsi);
  279. holder.textViewDate = (TextView)convertView.findViewById(R.id.tv_item_date);
  280. holder.ViewImage = (ImageView) convertView.findViewById(R.id.img_item_image);
  281. Glide.with(context).load("http://image.tmdb.org/t/p/w92" + mDataMovie.get(position).getImage()).into(holder.ViewImage);
  282. holder.relativeLayout = (RelativeLayout)convertView.findViewById(R.id.mv_list);
  283. DateFormat inputFormat = new SimpleDateFormat("yyyy-M-dd");
  284. java.text.DateFormat outputFormat = new SimpleDateFormat("MMMM dd, yyyy");
  285. Date date = null;
  286. try {
  287. date = inputFormat.parse(getIntent().getStringExtra(RELEASE_DATE));
  288. holder.textViewDate.setText(outputFormat.format(date));
  289. } catch (ParseException e) {
  290. holder.textViewDate.setText(getIntent().getStringExtra(RELEASE_DATE));
  291. }
  292.  
  293.  
  294.  
  295. convertView.setTag(holder);
  296.  
  297. }else {
  298. holder = (ViewHolder)convertView.getTag();
  299. }
  300. holder.textViewTitle.setText(mDataMovie.get(position).getTitle());
  301. holder.textViewDescription.setText(mDataMovie.get(position).getDiscripsi());
  302. holder.textViewDate.setText(mDataMovie.get(position).getDate());
  303.  
  304.  
  305. return convertView;
  306. }
  307.  
  308.  
  309.  
  310. private static class ViewHolder{
  311. TextView textViewTitle;
  312. ImageView ViewImage;
  313. TextView textViewDescription;
  314. TextView textViewDate;
  315. RelativeLayout relativeLayout;
  316.  
  317.  
  318. }
  319. }
  320. ================================================
  321. package com.skmobile.catalogmovie;
  322.  
  323. import android.content.AsyncTaskLoader;
  324. import android.content.Context;
  325. import android.support.annotation.RequiresApi;
  326. import android.util.Log;
  327. import android.os.Build;
  328.  
  329. import com.loopj.android.http.AsyncHttpResponseHandler;
  330. import com.loopj.android.http.SyncHttpClient;
  331.  
  332. import org.json.JSONArray;
  333. import org.json.JSONObject;
  334.  
  335. import java.util.ArrayList;
  336.  
  337. import cz.msebera.android.httpclient.Header;
  338.  
  339. /**
  340. * Created by ADMIN on 19/11/2017.
  341. */
  342.  
  343. public class MyTaskMovie extends AsyncTaskLoader<ArrayList<MovieItems>> {
  344.  
  345. private ArrayList<MovieItems> mMovieData;
  346. private boolean mResult;
  347. private String mKumpulanMovie;
  348.  
  349. public MyTaskMovie(final Context context, String KumpulanMovie){
  350. super(context);
  351.  
  352. onContentChanged();
  353. this.mKumpulanMovie = KumpulanMovie;
  354. }
  355.  
  356. @Override
  357. protected void onStartLoading(){
  358. if (takeContentChanged())
  359. forceLoad();
  360. else if (mResult)
  361. deliverResult(mMovieData);
  362. }
  363.  
  364. @Override
  365. public void deliverResult(final ArrayList<MovieItems> data){
  366. mMovieData = data;
  367. mResult = true;
  368. super.deliverResult(data);
  369. }
  370. @Override
  371. protected void onReset(){
  372. super.onReset();
  373. onStopLoading();
  374. if(mResult){
  375. onReleaseResources(mMovieData);
  376. mMovieData = null;
  377. mResult = false;
  378. }
  379. }
  380.  
  381. private static final String API_KEY = "e12d991c84852d5502f6066cfb2689bc";
  382.  
  383.  
  384. @Override
  385. public ArrayList<MovieItems> loadInBackground() {
  386. SyncHttpClient client = new SyncHttpClient();
  387.  
  388. final ArrayList<MovieItems> movieItemses = new ArrayList<>();
  389. String url = "https://api.themoviedb.org/3/search/movie?api_key="+API_KEY+"&language=en-US&query="+mKumpulanMovie;
  390.  
  391. client.get(url, new AsyncHttpResponseHandler() {
  392. @Override
  393. public void onStart(){
  394. super.onStart();
  395. setUseSynchronousMode(true);
  396. }
  397.  
  398. @RequiresApi(api = Build.VERSION_CODES.N)
  399. @Override
  400. public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
  401. try {
  402. String result = new String(responseBody);
  403. JSONObject responeseObject = new JSONObject(result);
  404. JSONArray list = responeseObject.getJSONArray("results");
  405.  
  406. for (int i = 0; i < list.length(); i++){
  407. JSONObject movie = list.getJSONObject(i);
  408. MovieItems movieItems = new MovieItems(movie);
  409. movieItemses.add(movieItems);
  410. }
  411. }catch (Exception e){
  412. e.printStackTrace();
  413. }
  414.  
  415. }
  416.  
  417. @Override
  418. public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
  419.  
  420. }
  421. });
  422. return movieItemses;
  423. }
  424. protected void onReleaseResources(ArrayList<MovieItems> data){
  425.  
  426. }
  427. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement