我正在尝试使用CustomAdapter创建一个复选框列表,我正在关注教程here,我的代码如下所示:
dataAdapter = new CustomAdapter(getContext(), R.layout.customrow, CheckboxArrayList);
ListView listView = (ListView) FragmentView.findViewById(R.id.list);
listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//.....
Toast.makeText(getContext(), "Clicked on Row: " + Checkbox.getName(), Toast.LENGTH_LONG).show();
}
});
只有当我按下复选框外的边距区域时,才会调用此方法。 如何使这个onClick方法在复选框本身上发生,而不是列表条目?感谢
答案 0 :(得分:0)
使用setOnCheckedChangeListener()获取复选框事件
答案 1 :(得分:0)
您希望在Checkbox控件本身设置一个侦听器,而不是ListView。
// in your ListView adapter
public View getView(int positon, View convertView, ViewGroup parent)
{
// inflate your cell
View cell = ...
// find your checkbox
CheckBox checkBox = (CheckBox)cell.findViewById(R.id.checkbox);
// set an OnCheckedChangeListener on the checkbox
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton button, Boolean isChecked)
{
}
});
.
.
.
如果您尚未执行此操作,请使用ViewHolder模式更有效地执行此操作。 ViewHolder将允许您保留对行/位置#的引用,以及共享CheckedChange事件的侦听器。