package br.com.while42.rpgcs.adapter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import br.com.while42.rpgcs.R;
import br.com.while42.rpgcs.model.TypeCode;
import br.com.while42.rpgcs.model.character.Skill;
import br.com.while42.rpgcs.model.character.SkillOther;
import br.com.while42.rpgcs.model.character.Skills;
import br.com.while42.rpgcs.model.character.attributes.TypeAbilities;
import br.com.while42.rpgcs.model.character.attributes.TypeRpgSkill;
import android.content.Context;
import android.database.DataSetObserver;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.TextView;
public class ListSkillsAdapter implements ListAdapter {
private static int DEFAULT_VALUE_SKIN = 0;
private Context context;
private List<View> views;
public ListSkillsAdapter(Context context, Skills skills) {
this.context = context;
views = new ArrayList<View>();
load(skills);
}
private void load(Skills skills) {
List<TypeRpgSkill> rpgSkills = new ArrayList<TypeRpgSkill>(Arrays.asList(TypeRpgSkill.values()));
if (skills != null) {
// Todas as skill que aparecem na ficha
for (Skill skill : skills.getAll()) {
rpgSkills.remove(skill.getType());
TypeRpgSkill typeSkill = skill.getType();
Integer modifier = skill.getModifier();
addSkill(typeSkill, modifier);
}
}
// Todas as demais skill (padrao) que ainda apareceram com valor zero(0)
for (TypeRpgSkill typeSkill : rpgSkills) {
addSkill(typeSkill, DEFAULT_VALUE_SKIN);
}
if (skills != null) {
// Todas as skill especiais
for (SkillOther especialSkill : skills.getAllOthers()) {
String name = especialSkill.getName();
TypeAbilities ability = especialSkill.getAbility();
Integer modifier = especialSkill.getModifier();
addSkill(name, ability, modifier);
}
}
}
private void addSkill(TypeRpgSkill typeSkill, Integer modifier) {
String name = context.getString(typeSkill.getCodeName());
TypeAbilities ability = typeSkill.getAbility();
addSkill(name, ability, modifier);
}
private void addSkill(String name, TypeCode ability, Integer modifier) {
Log.d("DEBUG (addSkill - TypeRpgSkill)", name);
View layout = View.inflate(context, R.layout.part_edit_list_skills, null);
TextView nameTextView = (TextView) layout.findViewById(R.id_part_edit_skills.textview_name);
nameTextView.setText(name);
EditText modifierEditText = (EditText) layout.findViewById(R.id_part_edit_skills.edittext_modifier);
modifierEditText.setText(modifier.toString());
if (ability != null) {
TextView abilityTextView = (TextView) layout.findViewById(R.id_part_edit_skills.textview_ability);
abilityTextView.setText(context.getString(ability.getCodeName()));
}
views.add(layout);
}
@Override
public int getCount() {
return views.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return views.get(position);
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEmpty() {
return views.isEmpty();
}
@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
return false;
}
}