0

私は最近Androidの仕事を始めました。リストビューがあり、リストビューの行にはテキストビューとチェックボックスが含まれています。チェックされたイベントを取得するために、アクティビティ プログラムで OnItemClickListener を使用しています。OnItemClickListenr に入ることができました。しかし、この中でチェックされたイベントを取得できません。多くのことを試しましたが、プログラムはチェックボックスのチェックされたイベントを認識できません。助けてください。以下は私のコードです -

リストビューの行 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/relativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
      android:orientation="vertical" 
        android:background="@android:color/white" >

        <TextView
            android:id="@+id/tvShapeDesc"
            android:layout_width="230dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="25dp"
            android:textColor="@android:color/black" />


    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="35dp"
        android:background="@drawable/unchecked"
        android:clickable="false"
        android:focusable="false"
        android:text="No"
        android:visibility="visible"/>

</RelativeLayout>

以下は私のリストビューカスタムアダプタのgetviewです -

public View getView(int position, View convertView, ViewGroup parent) {
        View itemView = null;
        shapeObj = this.shapeList.get(position);


          if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                itemView = inflater.inflate(R.layout.shapelist_item, null);
          } else {
        itemView = convertView;
          }

          TextView tvShape = (TextView) itemView.findViewById(R.id.tvShapeDesc);
          final CheckBox cbSelection = (CheckBox) itemView.findViewById(R.id.checkBox1);

          tvShape.setText(shapeObj.getName());

          cbSelection.setTag(position);

        return itemView;
   }

以下は私のOnItemClickListenerです -

lv.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg)
        {

        Toast.makeText(getApplicationContext(),
        "Click ListItem Number " + position, Toast.LENGTH_LONG).show();

        // CheckBox cbSelection = (CheckBox) view.getTag(position);      
        final CheckBox cbSelection = (CheckBox) view.findViewByI(R.id.checkBox1);

             final Drawable checkedImage = view.getResources().getDrawable(R.drawable.checked);
             final Drawable uncheckedImage = view.getResources().getDrawable(R.drawable.unchecked);


        if((cbSelection).isChecked()){    
            Toast.makeText(getBaseContext(), "You checked " + position, Toast.LENGTH_SHORT).show();  
            selectedCounter++;  
                  cbSelection.setVisibility(CheckBox.INVISIBLE);
                  cbSelection.setBackgroundDrawable(checkedImage);
                  cbSelection.setVisibility(CheckBox.VISIBLE);
        } else {                     
            Toast.makeText(getBaseContext(), "You unchecked " + position, Toast.LENGTH_SHORT).show();      
            selectedCounter--;
            cbSelection.setBackgroundDrawable(uncheckedImage);
                cbSelection.setVisibility(CheckBox.VISIBLE);
            }

        shapeStr = Integer.toString(selectedCounter) + " shapes(s) selected.";
        shapeCountStr.setText(shapeStr);

        }

プログラムが内部に入りません - if((cbSelection).isChecked()){ ... 助けてください。どうもありがとう。

4

1 に答える 1

0

以下のコードを試してください

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
        {               

            if(isChecked)
            {
                  // checkbox ckecked
            }
            else
            {
                 // checkbox un-ckecked
            }
        }
    });
于 2012-08-03T10:14:08.200 に答える