Ran*_*ku' 10
您似乎正在重用在您实现convertView的getView()方法上传递的内容.
Android会尝试对ListView中的不同项使用相同的视图.您将需要(1)手动取消选中/检查返回项目内的复选框(setChecked在getView上返回之前始终调用或(2)不使用convertView,但从getView返回新视图.
我认为(1)是推荐的.
对我来说很好
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
final ViewHolder holder;
final Season season = (Season) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.season, parent, false);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.season_title);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.season_check_box);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(season.getTitle());
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
season.setChecked(isChecked);
adapter.notifyDataSetChanged();
}
});
holder.checkBox.setChecked(season.isChecked()); // position is important! Must be before return statement!
return convertView;
}
protected class ViewHolder {
protected TextView title;
protected CheckBox checkBox;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8495 次 |
| 最近记录: |