0

这是我的代码。

    if (view == null) {         
        view = lInflater.inflate(
                R.layout.list_item_multiple_choice, null);
        vHolderMultiple = new ViewHolder();
        vHolderMultiple.tv = (TextView) view.findViewById(R.id.tvMultipleChoiceListItem);
        vHolderMultiple.cb = (CheckBox) view.findViewById(R.id.cbMultipleListItem);
        vHolderMultiple.iv = (ImageView) view.findViewById(R.id.ivMultiChoiceItem);
        view.setTag(vHolderMultiple);
    } 
    else {
        vHolderMultiple = (ViewHolder) view.getTag();
    }
    vHolderMultiple.tv.setText(optionArray.get(position).getOptionText());
    vHolderMultiple.cb.setChecked(lvAnswers.isItemChecked(position));
    if (optionArrayCopy.get(position).getImageUrl() != null && optionArrayCopy.get(position).getImageUrl().length() > 0) {
        final Bitmap bmp = loader.loadImageBitmap(optionArray.get(position).getImageUrl(), resDir);
        vHolderMultiple.iv.setVisibility(VISIBLE);
        if (bmp != null) {
            vHolderMultiple.iv.setImageBitmap(bmp);
        }
    } else
        vHolderMultiple.iv.setImageBitmap(null);
4

3 回答 3

0

似乎您正在使用 ListView 显示一些带有图像和复选框的文本。

最好使用 CheckedTextView,它是 TextView 与 CheckBox 的组合。并使用 TextView.setCompoundDrawablesWithIntrinsicBounds() 替换 ImageView。

然后您可以通过 ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) 启用多项选择模式。ListView 将有助于管理每一行的检查状态。

于 2012-11-28T10:58:13.723 回答
0

带有列表视图的复选框也会出现同样的问题。

使用 CheckedTextView UI 组件

或者

您需要手动编写代码。将 setonclicklistner 添加到 Textview 并将复选框对象传递给它。网上有很多可用的代码示例。

于 2012-11-28T10:41:12.803 回答
0

只需将 OnClickListener 添加到 TextView 并选中/取消选中其中的 CheckBox。像这样的东西:

vHolderMultiple.tv.setOnClickListener(new OnClickListener(){

    public void onClick(View v){

        if(vHolderMultiple.cb.isChecked())
            vHolderMultiple.cb.setChecked(false);
        else
            vHolderMultiple.cb.setChecked(true);
    }
});

请注意,您必须将 cd 声明为 final,以便能够从 OnClick 方法更改其状态。

于 2012-11-28T10:49:05.087 回答