我遇到了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/

10-09 13:00