setOnItemClickListener不能使用复选框?

时间:2012-07-25 12:23:04

标签: android checkbox

我的ListView包含十行。每行包含CheckBox。如何使用CheckBox

检查和取消选中setOnItemClickListener

示例代码:(这对我不起作用)

listview.setOnItemClickListener( new OnItemClickListener() 
{
    public void onItemClick( AdapterView<?> parent, final View v, final int position, long id ) 
    {
        Toast.makeText( this, " Position is " + position, Toast.LENGTH_SHORT ) .show();
        holder.checkbox = ( CheckBox ) v.findViewById( R.id.lock_File_CheckBox );
        holder.checkbox.toggle();
    }
});

我们如何确定是否选中CheckBox

4 个答案:

答案 0 :(得分:1)

尝试将OnCheckedChangeListener用于CheckBox

CheckBox repeatChkBx = ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            // perform logic
        }else
        {
            // perform logic
        }
    }
});

答案 1 :(得分:1)

要在onItemClick()中获取Checkbox的实例,您需要使用setTag()getTag()作为复选框实例。您可以查看my example on my blog,了解我们如何在onItemClick()内获取CheckBox实例。

onItemClick()内获取CheckBox实例后,更新您的列表内容并通知onItemClick()内的适配器,

if(checkbox.isChecked())
    list.get(position).setSelected(false);
else
    list.get(position).setSelected(true);

adapter.notifyDataSetChanged();

答案 2 :(得分:0)

Checkbox有oncheckedChangeListener         在ListView的getView函数中编写此代码

Toast.makeText( this, " Position is " + position, Toast.LENGTH_SHORT ) .show();
                holder.checkbox = ( CheckBox ) v.findViewById( R.id.lock_File_CheckBox );
                holder.checkbox.toggle();


       holder.checkbox .setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            // perform logic
        }else
        {
            // perform logic
        }
    }
});

答案 3 :(得分:0)

问题是您没有position - 参数来确定您点击了哪个视图。 OnItemClickListener确实为您提供了此参数,以便知道列表中的哪个项目已被单击。在位置X处理此项目的逻辑,您将必须实现。

您的解决方案将如下所示:

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long arg3) {
            // mData is the Array (or some other Collection) of Checkboxes which I gave to my ListAdapter
            ((CheckBox)mData.get(position)).toggle();
        }
    });