1、ListView上放置了复选按钮或者按钮后,因为单击事件的冲突会导致ListView的OnItemClick(单击事件)失灵。解决办法是将复选按钮或者按钮的android:focusable属性设置为false
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ck_choice"
android:layout_gravity="center_vertical"
android:focusable="false"
/>2、如果要实现ListView上复选按钮的单击事件,必须重写SimpleAdapter的getView方法
//参数1:适配器所处的上下文对象,用this表示当前Activity
//参数2:为该适配器提供数据的数据源对象,是List对象,该List对象中必须存放Map对象
//参数3:是ListView中一个View的布局文件
//参数4:是List中存放的Map对象的key值的集合
//参数5:一个View的布局文件中的控件的id的集合
SimpleAdapter simpleAdapter=new SimpleAdapter(
this,
datas,
R.layout.item_drink,
new String[]{"check","img","name","price"},
new int[]{R.id.ck_choice,R.id.iv_drink,R.id.tv_dname,R.id.tv_price}){
//重写getView方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//获得当前的View,即获得焦点的ItemView
View v= super.getView(position, convertView, parent);
//获得View上的CheckBox控件
CheckBox ckdrink=v.findViewById(R.id.ck_choice);
final TextView tvdname=v.findViewById(R.id.tv_dname);
final String dname=tvdname.getText().toString();
//为CheckBox控件绑定监听
ckdrink.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
{
stringBuffer.append(dname);
Log.i("tag",stringBuffer.toString());
}
else
{
int start=stringBuffer.indexOf(dname);
Log.i("tag","start"+start);
stringBuffer.replace(start,start+dname.length(),"");
}
}
});
return v;
}
};
版权声明:本文为yangxiamutou原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。