【发布时间】:2013-05-28 14:01:34
【问题描述】:
我有一个自定义适配器,布局中有一个复选框。我可以在 CheckBox 上毫无问题地使用 setOnClickListener 还是更好地使用 setOnCheckedChangeListener?
代码:
public class MyAdapter extends ArrayAdapter<Object> {
private Context context;
private LayoutInflater mInflater;
private boolean[] selected;
public MyAdaptader(Context context, List<Object> list) {
super(context, 0, list);
this.context = context;
mInflater = LayoutInflater.from(context);
selected = new boolean[list.size()];
}
private OnClickListener pressed= new OnClickListener() {
@Override
public void onClick(View v) {
if (((CheckBox) v).isChecked())
selected[(Integer)v.getTag()] = true;
else
selected[(Integer)v.getTag()] = false;
}
};
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.fila, null);
}
TextView txtName=convertView.findViewById(R.id.name);
CheckBox chkSelected = (CheckBox) convertView.findViewById(R.id.selected);
chkSelected.setTag(position);
txtName.setText(getItem(position).toString());
chkSelected.setChecked(selected[position]);
chkSelected.setOnClickListener(pressed);
return convertView;
}
}
我使用 onClick 并且似乎可以工作,但是 onCheckedListener 更好?
P.D.:没有 ViewHolder 来简化代码
【问题讨论】:
-
发布您的代码并清楚地描述您的问题
-
你想做什么。单击复选框时是否需要获取元素
-
我希望用户可以选择和取消选择元素
-
stackoverflow.com/questions/16685366/…。检查链接中的答案。用户可以选择取消选中复选框也可以检索选择的项目。
-
谢谢,但我不想复制和粘贴示例。我想知道使用一个或另一个监听器的原因。类似于 Boli-CS 的答案。
标签: android checkbox android-arrayadapter