0

我想实现,当我选择列表视图时,我的复选框将被选中。 在此处输入图像描述

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_row, null);

        holder = new ViewHolder();
        holder.checkbox = (CheckBox) convertView.findViewById(R.id.mycheckbox);
        holder.text = (TextView) convertView.findViewById(R.id.mytext);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    MyList mylist = mItems.get(position);

holder.text.setText(mylist.getMyText());


    holder.checkbox.setChecked(mChecked.get(position));
holder.chkItem.setChecked(mChecked.get(position));
    holder.chkItem.setOnCheckedChangeListener(new OnCheckedChangeListener()
     {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
            mChecked.set((Integer) buttonView.getTag(),isChecked);

        }
     });

    return convertView;
}

static class ViewHolder {
    CheckBox checkbox;
    TextView text;
}
}

这里只选中了复选框项目,但我想如果我单击列表视图,复选框将被选中,任何人都可以帮助我吗?为什么我再次问同样的问题意味着我通过项目单击侦听器尝试了列表视图单击事件,但它不起作用我也尝试了 setFocusable(true),但不起作用。

4

4 回答 4

1

这是我的回答,

convertView .setOnClickListener(new OnClickListener() {         

        public void onClick(View v) {
            // TODO Below is hardcoded to get item at index 1
            // This needs to be changed to fool-proof
            CheckBox checkBox = ((CheckBox)v.getTouchables().get(1));
            checkBox.setChecked(! checkBox.isChecked()); 

            System.out.println("Listview clicked");
        }
    });
于 2012-06-04T08:16:57.963 回答
0

在列表对象上使用 onitemclicklistener。如果行将被选中,复选框将被选中。

于 2012-04-27T12:35:30.477 回答
0

在列表项的 XML 布局中将复选框标记为 focusable="false"。然后处理listview的onClickListener,并切换复选框的选中状态。

如果没有 focusable="false",该复选框将从列表视图中窃取点击次数。

于 2012-05-22T17:31:38.010 回答
0

您必须在列表中实施 onItemClickListener。

list.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
              ViewHolder yourView = (ViewHolder) view;
              //do whatever you want with your view..
            }
    });
于 2012-04-27T12:37:21.397 回答