package com.daviancorp.android.ui.detail; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import com.daviancorp.android.data.classes.Monster; import com.daviancorp.android.data.classes.MonsterDamage; import com.daviancorp.android.data.database.DataManager; import com.daviancorp.android.loader.MonsterLoader; import com.daviancorp.android.mh3udatabase.R; public class MonsterDetailFragment extends Fragment { private static final String ARG_MONSTER_ID = "MONSTER_ID"; private Bundle mBundle; private Monster mMonster; private TextView mMonsterLabelTextView; private ImageView mMonsterIconImageView; private TableLayout mWeaponDamageTL, mElementalDamageTL; private ImageView mCutImageView, mImpactImageView, mShotImageView, mKOImageView; private ImageView mFireImageView, mWaterImageView, mIceImageView, mThunderImageView, mDragonImageView; public static MonsterDetailFragment newInstance(long monsterId) { Bundle args = new Bundle(); args.putLong(ARG_MONSTER_ID, monsterId); MonsterDetailFragment f = new MonsterDetailFragment(); f.setArguments(args); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); // Check for a Monster ID as an argument, and find the monster Bundle args = getArguments(); if (args != null) { long monsterId = args.getLong(ARG_MONSTER_ID, -1); if (monsterId != -1) { LoaderManager lm = getLoaderManager(); lm.initLoader(R.id.monster_detail_fragment, args, new MonsterLoaderCallbacks()); } } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_monster_detail, container, false); mMonsterLabelTextView = (TextView) view.findViewById(R.id.detail_monster_label); mMonsterIconImageView = (ImageView) view.findViewById(R.id.detail_monster_image); mCutImageView = (ImageView) view.findViewById(R.id.cut); mImpactImageView = (ImageView) view.findViewById(R.id.impact); mShotImageView = (ImageView) view.findViewById(R.id.shot); mKOImageView = (ImageView) view.findViewById(R.id.ko); mFireImageView = (ImageView) view.findViewById(R.id.fire); mWaterImageView = (ImageView) view.findViewById(R.id.water); mIceImageView = (ImageView) view.findViewById(R.id.ice); mThunderImageView = (ImageView) view.findViewById(R.id.thunder); mDragonImageView = (ImageView) view.findViewById(R.id.dragon); mWeaponDamageTL = (TableLayout) view.findViewById(R.id.weapon_damage); mElementalDamageTL = (TableLayout) view.findViewById(R.id.elemental_damage); return view; } private void updateUI() { String cellText = mMonster.getName(); String cellImage = "icons_monster/" + mMonster.getFileLocation(); mMonsterLabelTextView.setText(cellText); AssetManager manager = getActivity().getAssets(); try { InputStream open = manager.open(cellImage); Bitmap bitmap = BitmapFactory.decodeStream(open); // Assign the bitmap to an ImageView in this layout mMonsterIconImageView.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } // Draw Drawable mCutImageView.setImageResource(R.drawable.cut); mImpactImageView.setImageResource(R.drawable.impact); mShotImageView.setImageResource(R.drawable.shot); mKOImageView.setImageResource(R.drawable.stun); mFireImageView.setImageResource(R.drawable.fire); mWaterImageView.setImageResource(R.drawable.water); mIceImageView.setImageResource(R.drawable.ice); mThunderImageView.setImageResource(R.drawable.thunder); mDragonImageView.setImageResource(R.drawable.dragon); ArrayList<MonsterDamage> damages = DataManager.get(getActivity()).queryMonsterDamageArray(mMonster.getId()); MonsterDamage damage = null; String body_part, cut, impact, shot, ko, fire, water, ice, thunder, dragon; // body_part_tv1 // body_part_tv2 // cut_tv // impact_tv // shot_tv // ko_tv // fire_tv // water_tv // ice_tv // thunder_tv // dragon_tv LayoutInflater inflater = getLayoutInflater(mBundle); for(int i = 0; i < damages.size(); i++) { TableRow wdRow = (TableRow) inflater.inflate( R.layout.fragment_monster_detail_listitem, mWeaponDamageTL, false); TableRow edRow = (TableRow) inflater.inflate( R.layout.fragment_monster_detail_listitem, mElementalDamageTL, false); damage = damages.get(i); body_part = checkDamageValue(damage.getBodyPart()); cut = checkDamageValue("" + damage.getCut()); impact = checkDamageValue("" + damage.getImpact()); shot = checkDamageValue("" + damage.getShot()); ko = checkDamageValue("" + damage.getKo()); fire = checkDamageValue("" + damage.getFire()); water = checkDamageValue("" + damage.getWater()); ice = checkDamageValue("" + damage.getIce()); thunder = checkDamageValue("" + damage.getThunder()); dragon = checkDamageValue("" + damage.getDragon()); TextView body_part_tv1 = (TextView) wdRow.findViewById(R.id.body_part); TextView cut_tv = (TextView) wdRow.findViewById(R.id.dmg1); TextView impact_tv = (TextView) wdRow.findViewById(R.id.dmg2); TextView shot_tv = (TextView) wdRow.findViewById(R.id.dmg3); TextView ko_tv = (TextView) wdRow.findViewById(R.id.dmg4); TextView dummy_tv = (TextView) wdRow.findViewById(R.id.dmg5); TextView body_part_tv2 = (TextView) edRow.findViewById(R.id.body_part); TextView fire_tv = (TextView) edRow.findViewById(R.id.dmg1); TextView water_tv = (TextView) edRow.findViewById(R.id.dmg2); TextView ice_tv = (TextView) edRow.findViewById(R.id.dmg3); TextView thunder_tv = (TextView) edRow.findViewById(R.id.dmg4); TextView dragon_tv = (TextView) edRow.findViewById(R.id.dmg5); body_part_tv1.setText(body_part); body_part_tv2.setText(body_part); cut_tv.setText(cut); impact_tv.setText(impact); shot_tv.setText(shot); ko_tv.setText(ko); fire_tv.setText(fire); water_tv.setText(water); ice_tv.setText(ice); thunder_tv.setText(thunder); dragon_tv.setText(dragon); dummy_tv.setText(""); mWeaponDamageTL.addView(wdRow); mElementalDamageTL.addView(edRow); } } private class MonsterLoaderCallbacks implements LoaderCallbacks<Monster> { @Override public Loader<Monster> onCreateLoader(int id, Bundle args) { return new MonsterLoader(getActivity(), args.getLong(ARG_MONSTER_ID)); } @Override public void onLoadFinished(Loader<Monster> loader, Monster run) { mMonster = run; updateUI(); } @Override public void onLoaderReset(Loader<Monster> loader) { // Do nothing } } private String checkDamageValue(String damage) { String ret = damage; if (ret.equals("-1")) { ret = "--"; } else if (ret.equals("-2")) { ret = "?"; } return ret; } }