Skip to content

Commit

Permalink
* finish get data
Browse files Browse the repository at this point in the history
  • Loading branch information
MustafaHasria committed Jul 4, 2021
1 parent b7bac19 commit 01c0ff1
Show file tree
Hide file tree
Showing 8 changed files with 251 additions and 35 deletions.
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.smoathapplication">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

<application
android:allowBackup="true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,25 @@
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.smoathapplication.R;
import com.example.smoathapplication.api.ApiStateListener;
import com.example.smoathapplication.models.addmovie.AddMovieActivity;
import com.example.smoathapplication.models.home.adapter.CategoryAdapter;
import com.example.smoathapplication.models.home.adapter.MovieAdapter;
import com.example.smoathapplication.models.home.adapter.OfferAdapter;
import com.example.smoathapplication.models.home.caller.MovieCaller;
import com.example.smoathapplication.models.home.model.CategoryMovieModel;
import com.example.smoathapplication.models.home.model.MovieModel;
import com.example.smoathapplication.models.home.modelapi.ImageModel;
import com.example.smoathapplication.models.home.modelapi.MovieModel;
import com.example.smoathapplication.models.home.response.MovieResponse;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.wang.avi.AVLoadingIndicatorView;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -32,6 +38,7 @@ public class HomeActivity extends AppCompatActivity implements OfferAdapter.Offe
RecyclerView homeRecyclerCategory;
FloatingActionButton homeFloatingActionButtonAdd;
ImageView homeImageViewInfo;
AVLoadingIndicatorView homeProgressBar;
//endregion

//region Variables
Expand All @@ -41,9 +48,10 @@ public class HomeActivity extends AppCompatActivity implements OfferAdapter.Offe
RecyclerView.LayoutManager layoutManager;
List<MovieModel> offerModelList;
List<CategoryMovieModel> categoryMovieModelList;
MovieCaller movieCaller;
//endregion


//region Lifecycle
@Override
protected void onResume() {
super.onResume();
Expand All @@ -54,40 +62,72 @@ protected void onResume() {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

movieCaller = new MovieCaller();
homeRecyclerOffer = findViewById(R.id.home_recycler_offer);
homeRecyclerCategory = findViewById(R.id.home_recycler_category);
homeFloatingActionButtonAdd = findViewById(R.id.home_floating_action_button_add);
homeImageViewInfo = findViewById(R.id.home_image_view_info);
homeProgressBar = findViewById(R.id.home_progress_bar);

offerModelList = Paper.book().read("MOVIES_LIST", new ArrayList<>());
categoryMovieModelList = Paper.book().read("CATEGORY_MODEL_LIST", new ArrayList<>());
homeImageViewInfo.setOnClickListener(new View.OnClickListener() {

movieCaller.connectToGetAllMoviesApi(new ApiStateListener() {
@Override
public void onClick(View v) {
Dialog dialog = new Dialog(HomeActivity.this);
dialog.setCanceledOnTouchOutside(false);
dialog.setContentView(R.layout.developer_team_info_dialog);
Button developerTeamInfoDialogButtonOk = dialog.findViewById(R.id.developer_team_info_dialog_button_ok);
developerTeamInfoDialogButtonOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
public void onSuccess(Object... params) {
List<MovieResponse> movieResponses;
movieResponses = (List<MovieResponse>) params[0];
offerModelList = new ArrayList<>();
for (int i = 0; i < movieResponses.size(); i++) {
MovieModel movieModel =new MovieModel();
movieModel.setId(movieResponses.get(i).getId());
movieModel.setAverageRuntime(movieResponses.get(i).getAverageRuntime());
movieModel.setGenres(movieResponses.get(i).getGenres());
ImageModel imageModel = new ImageModel();
imageModel.setMedium(movieResponses.get(i).getImage().getMedium());
imageModel.setOriginal(movieResponses.get(i).getImage().getOriginal());
movieModel.setImage(imageModel);
movieModel.setLanguage(movieResponses.get(i).getLanguage());
movieModel.setName(movieResponses.get(i).getName());
movieModel.setOfficialSite(movieResponses.get(i).getOfficialSite());
movieModel.setPremiered(movieResponses.get(i).getPremiered());
movieModel.setRuntime(movieResponses.get(i).getRuntime());
movieModel.setStatus(movieResponses.get(i).getStatus());
movieModel.setSummary(movieResponses.get(i).getSummary());
movieModel.setType(movieResponses.get(i).getType());
movieModel.setUrl(movieResponses.get(i).getUrl());
offerModelList.add(movieModel);
}
homeProgressBar.setVisibility(View.GONE);
offerAdapter.updateList(offerModelList);

}
});

homeFloatingActionButtonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(HomeActivity.this, AddMovieActivity.class));
public void onFailure(Object... params) {

}
});
setupOfferRecyclerView();
setupCategoryRecyclerView();

homeImageViewInfo.setOnClickListener(v -> {
Dialog dialog = new Dialog(HomeActivity.this);
dialog.setCanceledOnTouchOutside(false);
dialog.setContentView(R.layout.developer_team_info_dialog);
Button developerTeamInfoDialogButtonOk = dialog.findViewById(R.id.developer_team_info_dialog_button_ok);
developerTeamInfoDialogButtonOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
});
homeFloatingActionButtonAdd.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, AddMovieActivity.class)));

}
//endregion

//region Setup Recyclers
private void setupOfferRecyclerView() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.smoathapplication.models.home.adapter;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
Expand All @@ -13,9 +14,10 @@
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.smoathapplication.R;
import com.example.smoathapplication.models.home.model.MovieModel;
import com.example.smoathapplication.models.home.model.OfferModel;
import com.example.smoathapplication.models.home.modelapi.MovieModel;

import java.util.List;

Expand All @@ -24,6 +26,7 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferAdapter
//region Variables
List<MovieModel> offerModelList;
OfferAdapterClickListeners offerAdapterClickListeners;
Context context;
//endregion

//region Constructor
Expand All @@ -39,30 +42,27 @@ public OfferAdapter(List<MovieModel> offerModelList, OfferAdapterClickListeners
@Override
public OfferAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.offer_list_item, viewGroup, false);
context = viewGroup.getContext();
return new OfferAdapterViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull OfferAdapterViewHolder offerAdapterViewHolder, int position) {
Glide.with(context).applyDefaultRequestOptions(new RequestOptions()
.placeholder(R.drawable.ic_downloading).error(R.drawable.ic_error))
.load(offerModelList.get(position).getImage().getMedium())
.into(offerAdapterViewHolder.offerListItemImageViewImage);
offerAdapterViewHolder.offerListItemTextName.setText(offerModelList.get(position).getName());
offerAdapterViewHolder.offerListItemTextCategory.setText(offerModelList.get(position).getCategory());
offerAdapterViewHolder.offerListItemTextDuration.setText(offerModelList.get(position).getDuration());
offerAdapterViewHolder.offerListItemTextRating.setText(String.valueOf(offerModelList.get(position).getRating()));
offerAdapterViewHolder.offerListItemImageViewImage.setImageBitmap(StringToBitMap(offerModelList.get(position).getImage()));
offerAdapterViewHolder.offerListItemCardMainContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
if (!offerModelList.get(position).getGenres().get(0).equals(""))
offerAdapterViewHolder.offerListItemTextCategory.setText(offerModelList.get(position).getGenres().get(0));
}

@Override
public int getItemCount() {
return offerModelList.size();
}

public void updateList(List<MovieModel> offerModelList){
public void updateList(List<MovieModel> offerModelList) {
this.offerModelList.clear();
this.offerModelList = offerModelList;
notifyDataSetChanged();
Expand All @@ -80,14 +80,14 @@ public Bitmap StringToBitMap(String encodedString) {
}

//region Interface
public interface OfferAdapterClickListeners{
public interface OfferAdapterClickListeners {
void onOfferListItemCardMainContainerLongClickListener(MovieModel movieModel, int position);
}
//endregion


//region View holder
class OfferAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener{
class OfferAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener {

//region Components
CardView offerListItemCardMainContainer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ public class MovieModel {

//region Constructor

public MovieModel() {
}

public MovieModel(String image, String name, String duration, String category, float rating) {
this.image = image;
this.name = name;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.example.smoathapplication.models.home.modelapi;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class ImageModel {


private String medium;
private String original;

public String getMedium() {
return medium;
}

public void setMedium(String medium) {
this.medium = medium;
}

public String getOriginal() {
return original;
}

public void setOriginal(String original) {
this.original = original;
}
}
Loading

0 comments on commit 01c0ff1

Please sign in to comment.