2

ListViewには10行が含まれています。各行には。が含まれていましたCheckBoxCheckBox使用をチェックおよびチェック解除するにはどうすればよいですか?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

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
        }
    }
});
于 2012-07-25T12:24:23.327 に答える
1

チェックボックスのインスタンスを内部に取得するには、チェックボックスインスタンスonItemClick()を使用する必要があります。内でCheckBoxのインスタンスを取得する方法を示していることを確認できます。setTag()getTag()my example on my blogonItemClick()

チェックボックスインスタンスを内部に取得した後、リストのコンテンツを更新し、内部のアダプタに次のようにonItemClick()通知します。onItemClick()

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

adapter.notifyDataSetChanged();
于 2012-07-25T12:30:23.960 に答える
0

チェックボックスに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問題は、クリックしたビューを判別するための-parameterがないことです。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 に答える