我的适配器类使用getView
方法,如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.userlist, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text2 = (TextView) view.findViewById(R.id.stuname);
viewHolder.text = (TextView) view.findViewById(R.id.rollno);
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.cb);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Model element = (Model) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
// Toast.makeText(getContext(), "Checked",
// Toast.LENGTH_SHORT).show();
}
});
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.text2.setText(list.get(position).getRoll());
holder.checkbox.setChecked(list.get(position).isSelected());
return view;
}
这里有一个oncheckedchange
听众。
我的问题是如何将列表项已更改的信息传递给我的主要活动?另外,当复选框状态发生变化时,我们如何在主活动中执行某些操作?
答案 0 :(得分:1)
您可以查看此示例
http://appfulcrum.com/2010/09/12/listview-example-3-simple-multiple-selection-checkboxes/
这有如何在列表视图中使用选择复选框并处理点击操作
您可能还会发现这对于如何使可点击区域如复选框等有帮助,因为listviews实际上不允许您直接选中复选框本身
http://wiresareobsolete.com/wordpress/2011/08/clickable-zones-in-listview-items/
答案 1 :(得分:1)
一个想法是调用CheckBox.setTag()
,使用您要保留的数据对其进行标记,并让onCheckedChange
侦听器使用CheckBox.getTag()
来检索数据。您甚至可以通过XML使用onClick
执行此操作。