public void filter(ListSettings settings) { boolean hasChanged = false; if (settings != null) { hasChanged = (!getFilter().equals(settings)); if (hasChanged) { getFilter().getSettings().set(settings); filter.filter((String) null); } } }
protected View prepareView(Talent talent, int position, View convertView, ViewGroup parent) { TalentViewHolder holder = (TalentViewHolder) convertView.getTag(); holder.text1.setText(talent.getName()); String be = talent.getProbeInfo().getBe(); if (TextUtils.isEmpty(be)) { Util.setVisibility(holder.text2, false, holder.text1); holder.text2.setText(null); } else { Util.setVisibility(holder.text2, true, holder.text1); holder.text2.setText(be); } if (talent.getComplexity() != null) { Util.setVisibility(holder.text2, true, holder.text1); if (holder.text2.length() > 0) holder.text2.append(" "); holder.text2.append(Util.toString(talent.getComplexity())); } holder.text3.setText(talent.getProbeInfo().getAttributesString()); if (talent instanceof CombatMeleeTalent) { CombatMeleeTalent meleeTalent = (CombatMeleeTalent) talent; if (meleeTalent.getAttack() != null && meleeTalent.getAttack().getValue() != null) { int modifier = 0; if (filter.getSettings().isIncludeModifiers()) { modifier = hero.getModifier(meleeTalent.getAttack()); } Util.setText(holder.text4, meleeTalent.getAttack().getValue(), modifier, null); holder.text4.setOnClickListener(probeListener); holder.text4.setOnLongClickListener(editListener); holder.text4.setTag(R.id.TAG_KEY_VALUE, meleeTalent); holder.text4.setTag(R.id.TAG_KEY_PROBE, meleeTalent.getAttack()); Util.setVisibility(holder.text4, true, holder.text1); } else { Util.setVisibility(holder.text4, false, holder.text1); } if (meleeTalent.getDefense() != null && meleeTalent.getDefense().getValue() != null) { int modifier = 0; if (filter.getSettings().isIncludeModifiers()) { modifier = hero.getModifier(meleeTalent.getDefense()); } Util.setText(holder.text5, meleeTalent.getDefense().getValue(), modifier, null); holder.text5.setOnClickListener(probeListener); holder.text5.setOnLongClickListener(editListener); holder.text5.setTag(R.id.TAG_KEY_VALUE, meleeTalent); holder.text5.setTag(R.id.TAG_KEY_PROBE, meleeTalent.getDefense()); Util.setVisibility(holder.text5, true, holder.text1); } else { holder.text5.setVisibility(View.INVISIBLE); } } else if (talent instanceof CombatDistanceTalent) { CombatDistanceTalent distanceTalent = (CombatDistanceTalent) talent; if (distanceTalent.getValue() != null) { int modifier = 0; if (filter.getSettings().isIncludeModifiers()) { modifier = hero.getModifier(distanceTalent); } Util.setText(holder.text4, distanceTalent.getValue(), modifier, null); holder.text4.setOnClickListener(null); holder.text4.setClickable(false); Util.setVisibility(holder.text4, true, holder.text1); } else { Util.setVisibility(holder.text4, false, holder.text1); } Util.setVisibility(holder.text5, false, holder.text1); } else { int modifier = 0; if (filter.getSettings().isIncludeModifiers()) { modifier = hero.getModifier(talent); } Util.setText(holder.text4, talent.getValue(), modifier, null); holder.text4.setOnClickListener(null); holder.text4.setClickable(false); // hide text5 and expand text1 // with its width Util.setVisibility(holder.text5, false, holder.text1); } if (holder.indicator != null) { if (talent.hasFlag(Talent.Flags.TalentSpezialisierung) || !TextUtils.isEmpty(talent.getTalentSpezialisierung())) { holder.indicator.setVisibility(View.VISIBLE); holder.indicator.setImageBitmap(indicatorFlash); } else if (talent.hasFlag(Flags.Meisterhandwerk)) { holder.indicator.setVisibility(View.VISIBLE); holder.indicator.setImageBitmap(indicatorHouse); } else if (talent.hasFlag(Flags.Talentschub)) { holder.indicator.setVisibility(View.VISIBLE); holder.indicator.setImageBitmap(indicatorStar); } else if (talent.hasFlag(Flags.Begabung)) { holder.indicator.setVisibility(View.VISIBLE); holder.indicator.setImageBitmap(indicatorStarGray); } else { holder.indicator.setVisibility(View.INVISIBLE); } } Util.applyRowStyle(talent, convertView, position); return convertView; }