经过度娘的法力,还有不断的尝试。终于,使用SimpleAdapter为listview的数据源来添加复选框和按钮实现了。
很多人都是自定义一个adapter继承自baseadapter的。当时刚开始使用的是SimpleAdapter,再写继承感觉很麻烦,改动很大。
经过不懈的努力,最终,添加了一些代码,使得想要的得以出现。分享了:
首先listview。xml文件。这里就不写全了,前面有篇文章里面有全的。
添加复选框
<CheckBox android:id="@+id/listDeleteCheckBox" android:layout_width="30px" android:layout_height="wrap_content" android:focusable="false" ---如果想要实现单击item监听,并且实现复选框监听,必须设置此行 android:visibility="visible" --visible 显示复选框,gone隐藏并且不占位置 android:clickable="true" />
下面是java代码,我继承的是原生态的activity
声明一个button就不写了
oncreate方法
deleBox = (CheckBox)findViewById(R.id.listDeleteCheckBox);
sAdapte = new SimpleAdapter(MainActivity.this, data, R.layout.listview, new String[]{"id","firstName","lastName","email"},
new int[]{R.id.ids,R.id.firstName,R.id.lastName,R.id.email}){
@Override
public View getView(final int position, View convertView,ViewGroup parent) {
//获取相应的view中的checkbox对象
if(convertView == null)
convertView = View.inflate(MainActivity.this, R.layout.listview, null);
CheckBox checkBox = (CheckBox)convertView.findViewById(R.id.listDeleteCheckBox);
//添加单击事件,在map中记录
//通过判断checkbox是否被选中来确定联系人是否被放在names和number两个数组中,或者使用CompoundButton.OnCheckedChangeListener
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(((CheckBox)v).isChecked()){
Toast.makeText(MainActivity.this,"选中了"+position,0).show();
System.out.println("-----------------");
}else{
}
}
});
return super.getView(position, convertView, parent);
}
};
完成了。
上图: