2

我的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

4 回答 4

1

要在其中获取 Checkbox 的实例,您onItemClick()需要使用复选框实例。您可以查看它显示了我们如何在内部获取 CheckBox 的实例。setTag()getTag()my example on my blogonItemClick()

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

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

adapter.notifyDataSetChanged();
于 2012-07-25T12:30:23.960 回答
1

尝试使用OnCheckedChangeListenerCheckBox

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
        }
    }
});
于 2012-07-25T12:24:23.327 回答
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
        }
    }
});
于 2012-07-25T12:42:22.240 回答
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();
        }
    });
于 2012-07-25T12:45:19.153 回答