0
我無法在expandablelistview中使用自定義佈局來工作,只需點擊兒童孩子即可刷新。刷新expandablelistview的整個父項
在該示例中,您具有MyExpandableListAdapter - > getChildView方法,其中子代充滿自定義佈局R.layout.list_out_item(什麼是文本瀏覽和按鈕)。
現在我想要的是,如果我點擊一個按鈕,該子視圖的父級更新。我怎樣才能做到這一點?我正在考慮刷新父母和孩子,因爲崩潰迫使更新,但也歡迎其他解決方案。
有關示例
public class Sample extends ExpandableListActivity {
ExpandableListAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set up our adapter
mAdapter = new MyExpandableListAdapter();
setListAdapter(mAdapter);
}
}
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
private Map<Ability, Integer> abilityMods;
private List<Skill> skills = SkillList();
private List<Skill> SkillList() {
List<Skill> skills = new Vector<Skill>();
abilityMods = Player.getAbilityModifier();
skills.add(new Skill(abilityMods, "Appraise", 2, Ability.Dex, 2));
skills.add(new Skill(abilityMods, "Autohypnosis", 0, Ability.Int,
-7));
skills.add(new Skill(abilityMods, "Craft", 0, Ability.Dex, 0));
return skills;
}
public MyExpandableListAdapter() {
super();
abilityMods = Player.getAbilityModifier();
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public int getChildrenCount(int groupPosition) {
return 1;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, final ViewGroup parent) {
LayoutInflater infalInflater = getLayoutInflater();
convertView = infalInflater.inflate(R.layout.list_out_item, null);
final Skill skill = getChild(groupPosition, childPosition);
TextView tv = (TextView) convertView.findViewById(R.id.abilityMod);
tv.setText(toString(skill.abillityMod()));
Button rankMod = (Button) convertView.findViewById(R.id.rankMod);
rankMod.setText(toString(skill.Ranks));
rankMod.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
skill.Ranks++;
}
});
return convertView;
}
private String toString(int value) {
if (value >= 0)
return ("+" + String.valueOf(value));
else
return (String.valueOf(value));
}
public Skill getGroup(int groupPosition) {
return skills.get(groupPosition);
}
@Override
public Skill getChild(int groupPosition, int childPosition) {
return getGroup(groupPosition);
}
public int getGroupCount() {
return skills.size();
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LayoutInflater infalInflater = getLayoutInflater();
convertView = infalInflater
.inflate(R.layout.list_header_item, null);
TextView skillName = (TextView) convertView
.findViewById(R.id.skillName);
Skill skill = getGroup(groupPosition);
TextView skillPower = (TextView) convertView
.findViewById(R.id.skillPower);
int TotalMod = skill.TotalModifier();
if (TotalMod >= 0)
skillPower.setText("+" + String.valueOf(TotalMod));
else
skillPower.setText(String.valueOf(TotalMod));
return convertView;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean hasStableIds() {
return true;
}
}
我的猜測是parentview.invalidate(); – blessenm
太糟糕了,它不起作用:( –
您是否嘗試notifyDataSetChanged? 或使用'invalidateviews()'而不是invalidate() –