android listview 中的checkbox,安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)...

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@id/android:list"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:cacheColorHint="#00000000"

android:fadingEdge="none" />

android:layout_width="fill_parent"

android:layout_height="40.0dip"

android:layout_alignParentBottom="true" >

android:id="@+id/all_check_btn"

android:layout_width="40.0dip"

android:layout_height="40.0dip"

android:layout_alignParentLeft="true"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginRight="3.0dip"

android:layout_weight="1.0"

android:descendantFocusability="blocksDescendants"

android:orientation="horizontal" >

android:id="@+id/isCheakBox"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true" />

android:id="@+id/dailyPic"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginTop="3.0dip"

android:layout_toRightOf="@id/isCheakBox"

android:contentDescription="dailyPic"

/>

android:id="@+id/dailyName"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_toRightOf="@id/dailyPic"

android:text="日报名称"

android:textColor="#000000"

android:textSize="12.0sp" />

android:id="@+id/deleteAttachment"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:layout_marginRight="20dp"

android:layout_marginTop="3.0dip"

android:focusable="false" />

public class ListViewCheckBoxActivity extends ListActivity {

private static final String TAG = "ListViewCheckBoxActivity";

private List itemList;

private DraftDailyAdapter adapter;

private Map isCheckedMap;

private CheckBox allCheckBox;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

allCheckBox = (CheckBox)findViewById(R.id.all_check_btn);

itemList = new ArrayList();

isCheckedMap = new HashMap();

//初始化数据

for(int i=0;i<8;i++){

Item item = new Item();

item.id=i;

item.name = "第"+i+"篇日报";

itemList.add(item);

isCheckedMap.put(i,false);

}

adapter = new DraftDailyAdapter(this,itemList);

setListAdapter(adapter);

allCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

Set set = isCheckedMap.keySet();

Iterator iterator = set.iterator();

if(isChecked){

while(iterator.hasNext()){

Integer keyId = iterator.next();

isCheckedMap.put(keyId,true);

}

}else{

while(iterator.hasNext()){

Integer keyId = iterator.next();

isCheckedMap.put(keyId,false);

}

}

adapter.notifyDataSetChanged();

}

});

}

class DraftDailyAdapter extends BaseAdapter {

public List list;

private Context context;

LayoutInflater inflater;

public DraftDailyAdapter(Context context, List list) {

super();

this.list = list;

this.context = context;

inflater = LayoutInflater.from(this.context);

}

@Override

public int getCount() {

return list == null ? 0 : list.size();

}

@Override

public Object getItem(int location) {

return list.get(location);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

Item item = list.get(position);

//Item的位置

final int listPosition = position;

//这个记录item的id用于操作isCheckedMap来更新CheckBox的状态

final int id = item.id;

if(convertView == null){

holder = new ViewHolder();

convertView = inflater.inflate(R.layout.item, null);

holder.tvName = (TextView)convertView.findViewById(R.id.dailyName);

holder.deleteButton = (ImageButton)convertView.findViewById(R.id.deleteAttachment);

holder.cBox = (CheckBox)convertView.findViewById(R.id.isCheakBox);

convertView.setTag(holder);

}else{

holder = (ViewHolder) convertView.getTag();

}

Log.d(TAG, "id="+id);

holder.cBox.setChecked(isCheckedMap.get(id));

holder.tvName.setText(item.name);

holder.deleteButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View paramView) {

//Log.d(TAG, "deletePosition="+listPosition+"");

//删除list中的数据

list.remove(listPosition);

//删除Map中对应选中状态数据

isCheckedMap.remove(id);

//通知列表数据修改

adapter.notifyDataSetChanged();

}

});

holder.cBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked){

isCheckedMap.put(id,true);

}else{

isCheckedMap.put(id,false);

}

}

});

return convertView;

}

public final class ViewHolder {

public TextView tvName;

public ImageButton deleteButton;

public CheckBox cBox;

}

}

class Item {

private Integer id;

private String name;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值