我遇到了onItemClickListener问题。
我有一个列表视图,其中的行包含一个复选框,我想在完整的行上单击。
当我单击一行时,应根据条件选中或取消选中该复选框。
现在的问题是我无法在onItemClickListener内获取复选框视图,因此我无法执行进一步的操作。
请检查以下代码:
适配器getView():
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder vHolder;
if (convertView == null) {
vHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.row_comparelist, null);
vHolder.chkSelected = (CheckBox) convertView
.findViewById(R.id.cbRow);
vHolder.chkSelected.setId(position);
convertView.setTag(vHolder);
vHolder.chkSelected.setTag(listObjects.get(position));
} else {
vHolder = (ViewHolder) convertView.getTag();
vHolder.chkSelected.setTag(listObjects
.get(position));
}
vHolder.chkSelected.setChecked(listObjects.get(position).getSelected());
return convertView;
}
活动onItemClick:
@Override
public void onItemClick(AdapterView<?> adapter, View view, int pos, long arg3) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) view.findViewById(R.id.cbRow);
}
在上面的代码中,它总是返回空值。
什么是其他解决方案?
编辑:
我知道我可以通过设置OnCheckedChangeListener或onClickListener在Adapter内完成此操作,但由于其他条件我无法执行此操作。因此,请提出一个只能与onItemClickListener一起使用的解决方案。
最佳答案
您为onClick编写的代码完全正确,但是从该行返回null的起源是:
vHolder.chkSelected.setId(position);
您正在将
R.id.cbRow
的值更改为item的position
的值!因此,当您尝试通过
R.id.cbRow
的值检索视图时,它必须返回null。关于android - 在onItemClickListener中获取 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25443703/