我正在开发一个使用带有复选框的列表视图的应用程序,考虑10 items
项上有list-view
,并且默认情况下选中复选框,直到现在每个东西都工作正常对我来说这是我的问题,当我取消选中列表视图中的任何复选框 整个列表视图需要刷新。
答案 0 :(得分:13)
Nikhil请记住定义自定义适配器是一次性练习,一旦您正确定义和理解它,您就可以自定义任何视图,如ListView,GridView,Gallery,Spinner。所以请正确理解以下答案。
要使用CheckBox(或任何View)定义ListView,您必须定义自己的自定义适配器。要定义自定义适配器,请按照以下步骤操作:
在你的情况下,
<RelativeLayout>
<TextView>
<CheckBox>
</RelativeLayout>
public class MyListViewAdapter extends BaseAdapter
{
....
....
static class ViewHolder {
protected TextView text;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.rowbuttonlayout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.label);
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Model element = (Model) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getName());
holder.checkbox.setChecked(list.get(position).isSelected());
.......
.......
}
答案 1 :(得分:-1)
复选框没有信息。关于listView所以要获得它的位置,将id设置为位置,然后在点击监听器中获取id。
第二种方法是通过在checkBox上设置ListItemClickListener而不是checkListener来检查/取消选中listItemClick,这仅在列表项只有一个可单击项时才有用,这是您的复选框。