ListView中包含checkbox等多个组件

案列:如想要实现下图功能

相关item.xml为:注意下面红色字体一定要设置, 由于checkbox的点击事件优先级比listview的高,所以要在checkbox中添加android:focusable="false",使得checkbox初始的时候没有获取焦点。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent"
	android:id="@+id/RelativeLayout03_edit" xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_height="40px" android:background="@drawable/bg"
	android:orientation="horizontal" android:gravity="center_vertical">
	<CheckBox android:id="@+id/checkbox" android:layout_width="15px"
		android:layout_height="40px" android:layout_marginLeft="27px"
		android:layout_centerVertical="true" android:focusable="false" android:focusableInTouchMode="false" android:clickable="false" 		android:button="@drawable/checkbox">
	</CheckBox>
	<ImageView android:id="@+id/Image" android:layout_width="wrap_content"
		android:layout_centerVertical="true" android:layout_height="40px"
		android:layout_marginLeft="10px" />
	<TextView android:id="@+id/name" android:layout_height="40px"
		android:layout_width="150px" android:gravity="center_vertical"
		android:ellipsize="end" android:textColor="#333333"
		android:layout_marginLeft="10px" android:singleLine="true" />
	<TextView android:id="@+id/size" android:layout_height="40px"
		android:layout_width="150px" android:gravity="center_vertical"
		android:ellipsize="end" android:textColor="#333333"
		android:layout_marginLeft="10px" android:singleLine="true" />
</LinearLayout>


对应的listView的OnItemClickListener()方法如下:

fileList.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> arg0, View v, int arg2,
					long arg3) {
				
				CheckBox checkbox = (CheckBox) v.findViewById(R.id.checkbox);
				checkbox.toggle();
				adapter.setSelectItem(arg2);
				//adapter.notifyDataSetChanged();
			}

		});


源码如下

 

你可能感兴趣的:(ListView中包含checkbox等多个组件)