私は最近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()){ ... 助けてください。どうもありがとう。