package com.github.glomadrian.mvpcleanarchitecture.ui.fragment; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.github.glomadrian.mvpcleanarchitecture.R; import com.github.glomadrian.mvpcleanarchitecture.app.BaseFragment; import com.github.glomadrian.mvpcleanarchitecture.domain.model.MarvelCharacter; import com.github.glomadrian.mvpcleanarchitecture.ui.presenter.CharacterInfoPresenter; import com.github.glomadrian.mvpcleanarchitecture.ui.view.ModelInfoView; import com.github.glomadrian.mvpcleanarchitecture.ui.viewmodel.CharacterInfoViewModel; import com.squareup.picasso.Picasso; import org.parceler.Parcels; import javax.inject.Inject; import butterknife.InjectView; import butterknife.Optional; /** * @author glomadrian */ public class CharacterInfoFragment extends BaseFragment implements ModelInfoView { public static final String KEY_CHARACTER = "character"; @Inject CharacterInfoPresenter characterInfoPresenter; @Optional @InjectView(R.id.info_image) ImageView infoImage; @InjectView(R.id.info_description) TextView infoDescription; @InjectView(R.id.info_title) TextView infoTitle; @InjectView(R.id.info_number_1) TextView infoNumber1; @InjectView(R.id.info_number_2) TextView infoNumber2; @InjectView(R.id.info_number_3) TextView infoNumber3; private String tag; public static CharacterInfoFragment newInstance(MarvelCharacter marvelCharacter) { Bundle args = new Bundle(); Parcelable marvelCharacterParcel = Parcels.wrap(marvelCharacter); args.putParcelable(KEY_CHARACTER, marvelCharacterParcel); CharacterInfoFragment characterInfoFragment = new CharacterInfoFragment(); characterInfoFragment.setArguments(args); return characterInfoFragment; } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.model_info, container, false); this.tag = String.valueOf(view.getTag()); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); characterInfoPresenter.onViewCreate(); characterInfoPresenter.setView(this); //Get character info if (getArguments() != null) { MarvelCharacter marvelCharacter = getMarvelCharacterFromArgs(); characterInfoPresenter.onCharacter(marvelCharacter); } } @Override public void showCharacterInfo(CharacterInfoViewModel characterInfoViewModel) { if (tag.equals("character_info_portrait")) { Picasso.with(getActivity()).load(characterInfoViewModel.getInfoImageUrl()).into(infoImage); } infoNumber1.setText(characterInfoViewModel.getInfoNumber1()); infoNumber2.setText(characterInfoViewModel.getInfoNumber2()); infoNumber3.setText(characterInfoViewModel.getInfoNumber3()); infoDescription.setText(characterInfoViewModel.getInfoDescription()); infoTitle.setText(characterInfoViewModel.getInfoTitle()); } private MarvelCharacter getMarvelCharacterFromArgs() { Parcelable marvelCharacterParcelable = getArguments().getParcelable(KEY_CHARACTER); return Parcels.unwrap(marvelCharacterParcelable); } }