在ListView中使用自定义适配器,我需要手动选中/取消选中CheckBox。我该怎么做呢?

时间:2013-07-15 20:37:21

标签: android listview checkbox onclicklistener

我觉得这个问题被贴了一千次。在几种情况下,我非常接近答案,但它总是滑过我的手指。

我想要做的是,当我点击列表的一行时,我手动取消/检查该行的CheckBox

换句话说:当我点击listView行时,我必须获取与之关联的CheckBox对象,以便我可以更改它的值。

我觉得答案就像在 listview.setOnItemClickListener 方法中调用或复制 holder.CheckBox.setOnClickListener (处理CustomAdapter中的CheckBox状态)方法,但我不知道怎么做:(

要清楚 - 我可以点击哪一行,点击了哪个复选框,它们的位置以及它的每个数据。如果我单击checkBox,它会被检查没问题。我唯一不能做的就是当我点击框旁边的文字时勾选方框。

我可以根据要求发布代码,但由于我不确定是否有必要,我会避免将此问题作为文本之墙。

2 个答案:

答案 0 :(得分:0)

我有一个你需要的例子,但我有一个图像,当你点击它时改为另一个:

final ImageView ui_fav = (ImageView) item.findViewById(R.id.fav_channelrow);
if (canales.get(position).getIsFav() == true) {
    ui_fav.setImageResource(R.drawable.star);
} else {
    ui_fav.setImageResource(R.drawable.silver_star);
}
ui_fav.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (canales.get(position).getIsFav()) {
            ui_fav.setImageResource(R.drawable.silver_star);
            canales.get(position).setIsFav(false);
        } else {
            ui_fav.setImageResource(R.drawable.star);
            canales.get(position).setIsFav(true);
        }
    }
});

答案 1 :(得分:0)

ListView myListView  = (your listView);
myListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            ViewGroup currentItem = (ViewGroup)myListView.getChidAt(arg2);
                    (CheckBox) currentCheckBox = currentItem.findViewById(---id of the checkBox );
currentCheckBox.setChecked(true);
        }
    });